styles_base.xml文件出错 - android app - 找不到匹配给定名称的资源' android:Widget.Material.ActionButton'

时间:2014-10-23 14:26:07

标签: android android-appcompat

好的,所以我是android开发的初学者,我刚创建了hello world app。但是它在styles_base.xml库的appcompat_v7文件中给了我错误。

  

错误:检索项目的父项时出错:找不到资源   匹配给定的名称   '机器人:Widget.Material.ActionButton&#39 ;. styles_base.xml / appcompat_v7 / res / values-v21
  AAPT问题

我如何处理此错误? 另外,为什么appcompat_v7库在我不想要的时候被使用? 我的意思是如何在不使用appcompat_v7库的情况下创建hello world应用程序?

这是styles_base.xml文件,它给出了上述错误。

<resources>

<!-- Like in themes_base.xml, the namespace "*.AppCompat.Base" is used to
 define base styles for the platform version. The "*.AppCompat"
 variants are for direct use or use as parent styles by the app. -->
<eat-comment/>

<style name="Base.Widget.AppCompat.ActionBar.TabView"
       parent="android:Widget.Material.ActionBar.TabView">
</style>

<style name="Base.Widget.AppCompat.Light.ActionBar.TabView"
       parent="android:Widget.Material.Light.ActionBar.TabView">
</style>

<style name="Base.Widget.AppCompat.ActionBar.TabText"
       parent="android:Widget.Material.ActionBar.TabText">
</style>

<style name="Base.Widget.AppCompat.Light.ActionBar.TabText"
       parent="android:Widget.Material.Light.ActionBar.TabText">
</style>

<style name="Base.Widget.AppCompat.Light.ActionBar.TabText.Inverse"
       parent="android:Widget.Material.Light.ActionBar.TabText">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Menu"
       parent="android:TextAppearance.Material.Widget.ActionBar.Menu">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Title"
       parent="android:TextAppearance.Material.Widget.ActionBar.Title">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Subtitle"
       parent="android:TextAppearance.Material.Widget.ActionBar.Subtitle">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Title.Inverse"
       parent="android:TextAppearance.Material.Widget.ActionBar.Title.Inverse">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.ActionBar.Subtitle.Inverse"
       parent="android:TextAppearance.Material.Widget.ActionBar.Subtitle.Inverse">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.ActionMode.Title"
       parent="android:TextAppearance.Material.Widget.ActionMode.Title">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.ActionMode.Subtitle"
       parent="android:TextAppearance.Material.Widget.ActionMode.Subtitle">
</style>

<!-- Action Button Styles -->

<style name="Base.Widget.AppCompat.ActionButton"
       parent="android:Widget.Material.ActionButton">
</style>

<style name="Base.Widget.AppCompat.ActionButton.CloseMode"
       parent="android:Widget.Material.ActionButton.CloseMode">
</style>

<style name="Base.Widget.AppCompat.ActionButton.Overflow"
       parent="android:Widget.Material.ActionButton.Overflow">
</style>

<!--
    Widget.AppCompat.Toolbar style is purposely ommitted. This is because the support
    Toolbar implementation is used on ALL platforms and relies on the unbundled attrs.
    The supporting Toolbar styles below only use basic attrs so work fine.
-->

<style name="Base.Widget.AppCompat.Toolbar.Button.Navigation"
       parent="android:Widget.Material.Toolbar.Button.Navigation">
</style>

<style name="Base.TextAppearance.Widget.AppCompat.Toolbar.Title"
       parent="android:TextAppearance.Material.Widget.ActionBar.Title">
</style>

<style name="Base.TextAppearance.Widget.AppCompat.Toolbar.Subtitle"
       parent="android:TextAppearance.Material.Widget.ActionBar.Subtitle">
</style>

<!-- Spinner Widgets -->

<style name="Base.Widget.AppCompat.ListView.DropDown"
       parent="android:Widget.Material.ListView.DropDown"/>

<style name="Base.Widget.AppCompat.DropDownItem.Spinner"
       parent="android:Widget.Material.DropDownItem.Spinner"/>

<style name="Base.Widget.AppCompat.Spinner" parent="android:Widget.Material.Spinner" />

<style name="Base.Widget.AppCompat.Spinner.DropDown.ActionBar" parent="android:Widget.Material.Spinner">
    <item name="spinnerMode">dropdown</item>
    <item name="disableChildrenWhenDisabled">true</item>
    <item name="popupPromptView">@layout/abc_simple_dropdown_hint</item>
</style>

<style name="Base.Widget.AppCompat.ListView.Menu"
       parent="android:Widget.Material.ListView" />

<!-- Popup Menu -->

<style name="Base.Widget.AppCompat.ListPopupWindow" parent="android:Widget.Material.ListPopupWindow">
</style>

<style name="Base.Widget.AppCompat.PopupMenu" parent="android:Widget.Material.PopupMenu">
</style>

<style name="Base.Widget.AppCompat.Light.PopupMenu"
    parent="android:Widget.Material.Light.PopupMenu">
</style>

<style name="Base.Widget.AppCompat.PopupMenu.Overflow">
    <item name="android:dropDownHorizontalOffset">-4dip</item>
    <item name="android:overlapAnchor">true</item>
</style>

<style name="Base.Widget.AppCompat.Light.PopupMenu.Overflow">
    <item name="android:dropDownHorizontalOffset">-4dip</item>
    <item name="android:overlapAnchor">true</item>
</style>

<style name="Base.TextAppearance.AppCompat.Widget.PopupMenu.Large"
    parent="android:TextAppearance.Material.Widget.PopupMenu.Large">
</style>

<style name="Base.TextAppearance.AppCompat.Widget.PopupMenu.Small"
    parent="android:TextAppearance.Material.Widget.PopupMenu.Small">
</style>

<style name="Base.TextAppearance.AppCompat.Light.Widget.PopupMenu.Large"
    parent="android:TextAppearance.Material.Widget.PopupMenu.Large">
</style>

<style name="Base.TextAppearance.AppCompat.Light.Widget.PopupMenu.Small"
    parent="android:TextAppearance.Material.Widget.PopupMenu.Small">
</style>

<!-- Search View result styles -->

<style name="Base.TextAppearance.AppCompat.SearchResult.Title"
       parent="@android:TextAppearance.Material.SearchResult.Title">
</style>

<style name="Base.TextAppearance.AppCompat.SearchResult.Subtitle"
       parent="@android:TextAppearance.Material.SearchResult.Subtitle">
</style>

<style name="Base.Widget.AppCompat.AutoCompleteTextView" parent="android:Widget.Material.AutoCompleteTextView" />

<style name="Base.Widget.AppCompat.Light.AutoCompleteTextView" parent="android:Widget.Material.AutoCompleteTextView" />

<!-- Progress Bar -->

<style name="Base.Widget.AppCompat.ProgressBar.Horizontal"
       parent="android:Widget.Material.ProgressBar.Horizontal">
</style>

<style name="Base.Widget.AppCompat.ProgressBar"
       parent="android:Widget.Material.ProgressBar">
</style>

<!-- TODO. Needs updating for Material -->
<style name="Base.Widget.AppCompat.ActivityChooserView" parent="">
    <item name="android:gravity">center</item>
    <item name="android:background">@drawable/abc_ab_share_pack_holo_dark</item>
    <item name="android:divider">?attr/dividerVertical</item>
    <item name="android:showDividers">middle</item>
    <item name="android:dividerPadding">6dip</item>
</style>


这是我使用的代码:

public class MainActivity extends Activity {

   @Override
   protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
   }
}

13 个答案:

答案 0 :(得分:114)

转到Android SDK安装目录,然后添加&gt; android&gt;支持&gt; v7&gt;程序兼容性。

在我的情况下:D:\ Software \ adt-bundle-windows-x86-20140702 \ sdk \ extras \ android \ support \ v7 \ appcompat

进入appcompat文件夹后,检查project.properties文件,然后将值从默认值19更改为21:

target=android-21.

保存文件,然后刷新项目。

然后清理项目: 在项目选项卡中,选择清除选项,然后选择您的项目并清理......

这将解决错误。如果没有,请确保您的项目还针对API 21或更高版本(与之前步骤相同,并且在升级针对旧版本的项目时很容易忘记)。 享受编码...

答案 1 :(得分:42)

我自己刚刚解决了这些确切的错误。看起来关键是你的appcompat库项目中的project.properties文件应该使用你的特定appcompat项目编写的API的最高版本(在你的情况下它看起来像v21)。我发现告诉的最简单的方法是在res文件夹中查找最高的'values-v **'文件夹(例如。values-v21)。

为了澄清,除了Support Library Setup上的说明之外,您的appcompat/project.properties文件应该包含在其中:target=android-21(我的来自19代替)。

还要确保您拥有与所安装版本相匹配的“SDK平台”(例如,对于v21安装Android 5.0 SDK平台)。

另见appcompat-v7:21.0.0': No resource found that matches the given name: attr 'android:actionModeShareDrawable'

或者,如果您根本不想使用appcompat,(我认为)您需要做的就是右键单击您的项目&gt;属性&gt; Android&gt;图书馆&gt;删除对appcompat的引用。这些错误仍将显示在appcompat项目中,但在此之后不应影响您的项目。

答案 2 :(得分:8)

Prerequirements

确保您已通过SDK-Manager下载了最新的附加内容以及Android 5.0 SDK。enter image description here

答案 3 :(得分:6)

在我更新&#34;之后发生了这种情况。进入5.0 SDK并希望创建一个带有支持库的新应用程序

在您要使用支持库和支持库本身的两个项目(project.properties文件)中,必须设置相同的target

e.g。对于我的情况,它工作

  1. 在项目android-support-v7-appcompat中更改 project.properties target=android-21
  2. 清理android-support-v7-appcompat在我的项目中(我需要支持的地方) 图书馆)
  3. 在我的项目中,将project.properties更改为target=android-21android.library.reference.1=../android-support-v7-appcompat(或在项目属性中添加支持库)
  4. 清理项目

答案 4 :(得分:4)

您的编译Sdk版本设置为21。将其更改为20less。它出现在android studio的build.gradle中。然后清理项目并重建它

答案 5 :(得分:4)

我的项目构建目标android-support-v7-appcompat与API 19刚刚将其更改为它为我工作的API 20

右键单击android-support-v7-appcompat库项目 转到属性 点击Android 将项目构建目标从Android 4.x.x更改为Android 5.0

这对我有所帮助,希望它也有助于其他人。

答案 6 :(得分:2)

我遵循了所有这些说明,包括Android的说明。最终为我修复的是在我的项目中将Project Build Target从API级别更改为API级别21。

我正在使用API​​ 22(Android 5.1.1),这比编写其他答案时更新。所以你不能像6个月前那样在支持库中设置target = 21.

答案 7 :(得分:2)

我正在向API级别21编写应用程序,我尝试了以上所有但是没有用,最后我从appcompat_v7删除了Values-v23.It工作。

答案 8 :(得分:0)

将目标更改为匹配版本(如Ben所解释)后,如果仍然显示错误,则只需在项目上运行“清理”以清除资源错误。

答案 9 :(得分:0)

好吧,我花了2天的时间才弄明白这个问题。 简而言之,默认情况下,您应该将最高版本保持为您下载的最高级别,对于我的案例,请说23级(Android M)。

否则你会收到这些错误。您必须转到项目和appcompat的项目属性才能更改目标版本。

叹息。

答案 10 :(得分:0)

对于我的Android Studio锻炼。当我在Project Structure设置中手动将Compile SDK Version从API23(Android 6)更改为API17(Android 4.2)并尝试更改布局文件中的某些代码时,我发现会发生这种情况。

我想念 - 我必须手动更改它,即使在新项目中我已经选择了“最小SdK”为4.2。

解决方法是将其更改回API23,它仍然可以在Android 4.2上运行。 ^^

答案 11 :(得分:0)

Download the latest "sdk platform" and "sdk build tools" of same version like 23.* for 
both from "sdk Managar".

(供参考,见上图     从 back track)。然后右键单击您的项目 - &gt;属性 - &gt; Android - &gt;     in&#34;项目构建属性&#34;选择&#34; API级别&#34; 23或您更新的最新版本。然后清理一次项目。

Note: But all three should be in same version.

答案 12 :(得分:0)

请打开你的android sdk安装目录,然后

在我的路上:

E:\的Android \ SDK \额外\机器人\支持\ V7 \程序兼容性

那么你可以看到&#34; project.properties&#34;文件

打开它并更改目标&#34; target = android-19&#34; to&#34; target = android-23&#34;

它为我工作。

谢谢:https://stackoverflow.com/a/27243716/4140589