【问题标题】:How to get a Button's background back to default (programmatically)?如何将按钮的背景恢复为默认值(以编程方式)?
【发布时间】:2025-12-23 11:15:17
【问题描述】:

所以我正在设置按钮的背景:

b.setBackgroundResource(R.drawable.custom_button1);

如何以编程方式将其设置回默认(无聊的灰色)Android 按钮?是否有一个 R.android.boring_grey 资源标识符我可以在不自己重新创建这些状态的情况下引用?好像没找到。也许我的谷歌搜索技能让我失望了。

哦,顺便说一句,我试过这个:

   b.setBackgroundResource(0);

按钮实际上消失了(与黑色背景混合?)。

【问题讨论】:

    标签: android button


    【解决方案1】:

    你试过了吗?

    android.R.drawable.btn_default;
    

    【讨论】:

    • 就是这个,谢谢。我这辈子都找不到。看过之前的一篇关于这个的帖子,但他们放弃了“android.R”部分,只有“R.drawable”
    • 下面的答案适合最初以不同方式自定义按钮的人。
    • 有什么办法可以得到系统默认按钮,而不是看起来像 Gingerbread 的默认按钮?
    • 这不起作用,因为 btn_default 可能并不总是您的应用程序的默认值!我使用了@piotrpo 的答案,它就像一个魅力。
    【解决方案2】:

    首先使用Button b;获取默认背景

    Drawable d = b.getBackground();
    

    然后设置您选择的另一个背景

    b.setBackgroundResource(R.drawable.custom_button1);
    

    如果您需要再次使用默认背景,请使用此

    b.setBackgroundDrawable(d);
    

    【讨论】:

    • 我会说这个答案比公认的更好。接受的答案给了我一个 android 2.3 风格的按钮,而这给了我原来的按钮(它比接受的答案更有可能做到)。
    • 非常感谢您的回答!找了这么久的合适的解决方案,终于在这里找到了。这正是我想要的。
    • 由于 btn_default 不是每个应用程序的默认值,我使用了这个答案。不是被接受的!
    【解决方案3】:

    使用这个

    b.tr.setBackgroundDrawable(null);
    

    【讨论】:

    • 方法 setBackgroundDrawable 已弃用
    • 改用 setBackground(Drawable)
    【解决方案4】:

    我做到了

    this.setBackgroundResource(android.R.drawable.btn_default);

    【讨论】:

      【解决方案5】:

      试试

      button.setBackgroundResourses(R.drawable.yourimage);
      

      它将设置按钮的默认背景。 您可以从给定的链接中阅读更多的 android 小部件的默认属性: https://github.com/android/platform_frameworks_base/blob/master/core/res/res/values/styles.xml

      【讨论】:

        【解决方案6】:

        XML 中“现代”按钮的可绘制对象是 @android:drawable/btn_default_material
        由于某种原因,它在 android.R.drawable 中不存在。

        编辑:它是私有的,所以不要使用它。

        【讨论】: