Android AppCompat 暗黑主题设置复选框

4

我已经升级到Support Library中的AppCompat库v21版本。在使用暗黑主题(@style/Theme.AppCompat)时,SettingsActivity中的复选框是黑色的,所以你甚至看不见它们。

更新之前如下:

enter image description here

更新之后如下:

enter image description here

应用程序中其他位置的复选框都正常。如何修复SettingsActivity中的复选框?


我也遇到了同样的问题 =( - Addev
3个回答

3

我通过使用这个页面上的解决方案来解决了这个问题,通过将代码复制到我的项目中创建兼容的PreferenceFragment类。然后,我用从ActionBarActivity继承的类替换了我的以前的PreferenceActivity,并实例化了一个派生自新PreferenceCompatFragment类的Fragment类。现在,我的设置可以很好地显示出期望颜色的操作栏以及正确突出显示的复选框。以下是我的新设置活动的代码:

public class SettingsFragActivity extends ActionBarActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    FrameLayout frame = new FrameLayout(this);
    frame.setId(R.id.content);
    setContentView(frame);
    this.getSupportFragmentManager().beginTransaction()
            .replace(R.id.content, new SettingsFragment (), null).commit();
    }


public static class SettingsFragment extends PreferenceCompatFragment {
    @Override
    public void onCreate(Bundle paramBundle) {
        super.onCreate(paramBundle);
        addPreferencesFromResource(R.xml.prefs);
    }
}

请注意,addPreferencesFromResource属于自定义PreferenceFragment类。


2

请确保你的activity继承自ActionBarActivity。继承自Activity会导致你的效果出现问题;而继承自ActionBarActivity则可以解决这个问题。你可以在这个示例项目中看到结果。


那似乎是正确的原因,但我可能漏掉了什么。我继承自SettingsActivity(显然继承自Activity)。改为继承ActionBarActivity似乎没有太多意义。 - Floss
@Floss:你将无法在PreferenceActivity中使用操作栏后向兼容包(我猜这就是你所说的“SettingsActivity”)。但有人可以创建一个ActionBarPreferenceActivity混搭,作为PreferenceActivity功能的ActionBarActivity子类。 - CommonsWare

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接