【问题标题】:Set drawable's background image programmatically以编程方式设置drawable的背景图像
【发布时间】:2016-06-12 06:32:57
【问题描述】:

我有一个按钮 (btn)。使用drawable设置Button的样式:

btn.setBackgroundResource(R.drawable.mybtn_style);

这个按钮有一些文字。在某些情况下,我想使用图像而不是文本。
使用以下内容:

if (useImagesinButtons==true){
   btn.setBackgroundResource(R.drawable.ic_myImage);
   btn.setText("");
}

用图像(myImage)替换样式。

但我不想改变 Button 的整体风格。我只想设置图像而不是文本。我想以编程方式做到这一点。

我可以在调用之前更改drawable的背景图片吗

btn.setBackgroundResource(R.drawable.mybtn_style);

【问题讨论】:

    标签: android button background-image android-button


    【解决方案1】:
      if (useImagesinButtons==true){
                btn.setBackgroundResource(R.drawable.ic_myImage);
            }
    else{
    btn.setBackgroundResource(R.drawable.mybtn_style);    
    }
    

    【讨论】:

    • 这会将样式替换为仅包含图像的“空”样式。我不想要这个。而且我不想创造第二种风格。我想以编程方式修改样式以包含图片
    【解决方案2】:

    ->首先使用“android:background”属性在XML文件中设置按钮背景。

    ->那么当你想要按钮上的文字时,只需在按钮上设置文字。

    【讨论】:

    • 我不想修改更改 xml 的原始样式,因为在具有不同文本的多个按钮中使用相同的样式,并且(当它们在背景中有图像时)具有不同的图像。我想以编程方式修改现有样式。
    • 如果你想编程,那么 setBackground() 应该可以工作。
    • 我可以这样设置背景。但是我想在设置之前修改背景的图像。
    【解决方案3】:

    您不能以编程方式更改样式。但是,您可以为您拥有的两个特定案例创建两个不同的按钮实例。一个纯文本按钮和一个带有图像的按钮。当然,您将一次使用两者之一。只要条件发生变化,您就可以删除/添加按钮。

    【讨论】:

    • 我不能有 2 种不同的样式(一种带有文本,一种带有图像),因为正如我在 Tara 的回复中评论的那样,背景图像并不总是相同的。你确定我不能以编程方式修改样式吗?我不需要修改原始的 xml 文件。
    猜你喜欢
    • 1970-01-01
    • 2011-10-08
    • 2012-02-02
    • 2011-04-13
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多