【问题标题】:Programmatically styling Android's CheckBox以编程方式为 Android 的 CheckBox 设置样式
【发布时间】:2013-02-19 17:20:23
【问题描述】:

我有一个扩展 Activity 并以编程方式添加一些 View 项的类。

CheckBox checkBox = new CheckBox(this, null, android.R.style.Widget_CompoundButton_Star);

我想设置一些样式为 Android SDK 星星的复选框。将样式设置为 Widget_CompoundButton_Star 后,我看不到任何复选框。虽然这种 SDK 风格在直接放入 xml 时显然有效。

我在这里遗漏了什么吗?谢了

// 正如 Pragnani 所说。改用android.R.attr.starStyle 可以。

【问题讨论】:

  • 您是否在活动视图中添加复选框?再贴一些代码
  • 是的,我做到了。当我使用 CheckBox(Context) 构造函数时,它可以完美地工作。但是,在三参数构造函数中显式设置样式时,项目不会出现。
  • @Yuri 可能该样式与复选框不兼容...
  • CheckBox checkBox = (CheckBox) findViewById(int);使用 XML 作品中定义的确切样式。所以我猜这种风格与复选框兼容。

标签: android checkbox styling


【解决方案1】:

您可以设置样式以使用 ContextThemeWrapper 以编程方式查看。

CheckBox mCheckBox = new CheckBox(new ContextThemeWrapper(context, R.style.MyCheckBox));

【讨论】:

  • 这是获取视图的好方法,但它也会导致此特定警告 W/ResourceType: Too many attribute references, stop at: 0x01010034 所以可能需要另一种方法来处理它比这个。
【解决方案2】:

我来到这里是为了寻找 CheckBox 的文本而不是 Drawable 的样式,我通过另一种方式找到了解决方案。但是,嘿!让我把解决方案分享给未来的自己。

代替:

CheckBox cb = new CheckBox(this, null, R.style.yourstyle);

用途:

CheckBox cb = new CheckBox(this);
cb.setTextAppearance(this, R.style.yourstyle);

希望它有助于解决问题的主题!

【讨论】:

    【解决方案3】:

    这是我的工作解决方案:

    CheckBox checkBox = new CheckBox(new ContextThemeWrapper(this, R.style.CheckBoxStyle))
    

    【讨论】:

      猜你喜欢
      • 2020-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-11
      • 2012-04-12
      • 2011-03-09
      • 2015-07-04
      • 2014-02-25
      相关资源
      最近更新 更多