我已经升级到Support Library中的AppCompat库v21版本。在使用暗黑主题(@style/Theme.AppCompat)时,SettingsActivity中的复选框是黑色的,所以你甚至看不见它们。
更新之前如下:
更新之后如下:
应用程序中其他位置的复选框都正常。如何修复SettingsActivity中的复选框?
我已经升级到Support Library中的AppCompat库v21版本。在使用暗黑主题(@style/Theme.AppCompat)时,SettingsActivity中的复选框是黑色的,所以你甚至看不见它们。
更新之前如下:
更新之后如下:
应用程序中其他位置的复选框都正常。如何修复SettingsActivity中的复选框?
我通过使用这个页面上的解决方案来解决了这个问题,通过将代码复制到我的项目中创建兼容的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类。
请确保你的activity继承自ActionBarActivity
。继承自Activity
会导致你的效果出现问题;而继承自ActionBarActivity
则可以解决这个问题。你可以在这个示例项目中看到结果。
PreferenceActivity
中使用操作栏后向兼容包(我猜这就是你所说的“SettingsActivity”)。但有人可以创建一个ActionBarPreferenceActivity
混搭,作为PreferenceActivity
功能的ActionBarActivity
子类。 - CommonsWare我猜这是因为支持库不再模拟Holo主题。
你尝试在你的主题中定义colorAccent了吗?
<style name="Theme.MyTheme" parent="Theme.AppCompat.Light">
...
<!-- colorAccent is used as the default value for colorControlActivated,
which is used to tint widgets -->
<item name=”colorAccent”>@color/accent</item>
...
</style>
参考资料:
http://android-developers.blogspot.com.ar/2014/10/appcompat-v21-material-design-for-pre.html