Android 使用appcompat-v7将材质主题应用于API版本19及以下版本
我最近下载了Android Lollipop SDK,并更新了所有依赖项,修复了构建路径,并顺利导入了以下支持库: android-support-v7-appcompat android-support-v7-gridlayout android-support-v7-mediarouter android-support-v7-palette 我的应用程序使用蓝牙低能量,所以我的minSDK版本是18,targetSDK是最新的;二十一, 当我尝试使用以下xml应用Material主题(使用appcompat-v7)时,会出现我的问题:Android 使用appcompat-v7将材质主题应用于API版本19及以下版本,android,android-5.0-lollipop,android-support-library,Android,Android 5.0 Lollipop,Android Support Library,我最近下载了Android Lollipop SDK,并更新了所有依赖项,修复了构建路径,并顺利导入了以下支持库: android-support-v7-appcompat android-support-v7-gridlayout android-support-v7-mediarouter android-support-v7-palette 我的应用程序使用蓝牙低能量,所以我的minSDK版本是18,targetSDK是最新的;二十一, 当我尝试使用以下xml应用Material主题(使用
@颜色/材质\u蓝色\u 500
@颜色/材质\u蓝色\u 700
@颜色/材料\绿色\ A200
当我尝试运行此程序时,出现以下错误:
错误:未找到与给定名称匹配的资源(在“colorAccent”处,值为“@color/material\u green\u A200”)
通过谷歌搜索,我发现这个github存储库在3天前更新过:gist.github.com/eyecatchup/b5e564cfe11619cc3999
在那里,大多数材质设计颜色都已定义,所以我只是将其复制到主题的color.xml中
然后,尽管该行在xml中,我还是得到了以下错误:
错误:未找到与给定名称匹配的资源(在值为“@color/black”的“bright\u frommer\u material\u light”处)
无论如何,我删除了那一行,并成功地在我的手机上安装了应用程序。然而,主题仍然是全息的,而不是物质的
谁能告诉我我做错了什么?他们非常清楚地说我可以在低于5.0的版本中使用Material主题,并且我遵循了关于保持兼容性的说明
非常感谢您的帮助。您必须创建一个新的项目,然后Id会自动生成appcompat_v7库,然后右键单击您的旧错误项目,单击属性,然后单击android并将appcompat_v7库添加到您的项目中。事实证明,我只是将主题应用到我的自定义主题中values文件夹,而values-v11和values-v14主题xml保持不变 修复了这个问题,我通过更新我的活动将ActionBarActivity和片段管理器扩展到
getSupportFragmentManager()
管理器,而不是getFragmentManager()
,从而运行了material主题
如果您在为ListView设置适配器时碰巧使用了getActionBar中的导航抽屉,则需要将ActionBar强制转换为SupportActionBar,如下所示:
private ActionBar getSupportActionBar() {
return ((ActionBarActivity)getActivity()).getSupportActionBar();
}
mDrawerListView.setAdapter(
new ArrayAdapter<String>(getSupportActionBar()
.getThemedContext(),
R.layout.fragment_navigationdrawer_textview,
android.R.id.text1, drawerOptions));
mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
return mDrawerListView;
并按照您通常希望的方式设置适配器:
private ActionBar getSupportActionBar() {
return ((ActionBarActivity)getActivity()).getSupportActionBar();
}
mDrawerListView.setAdapter(
new ArrayAdapter<String>(getSupportActionBar()
.getThemedContext(),
R.layout.fragment_navigationdrawer_textview,
android.R.id.text1, drawerOptions));
mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);
return mDrawerListView;
mDrawerListView.setAdapter(
新的阵列适配器(getSupportActionBar()
.getThemedContext(),
R.layout.fragment\u导航抽屉\u文本视图,
android.R.id.text1,抽屉选项);
mDrawerListView.setItemChecked(mCurrentSelectedPosition,true);
返回mDrawerListView;
希望这能帮助任何和我有同样问题的人。祝你好运。我已经将appcompat_v7库添加到我的项目中。我的项目目前没有错误,运行良好,唯一的问题是尽管使用了appcompat_v7材质主题,但主题仍然是Holo。在资源中添加名为“Material_green_A200”的颜色。。。