2016-09-15 54 views
0

我在android中测试样式,我似乎无法继承layout_width或height。我不能继承layout_width和高度

这是我的价值观styles.xlm

<resources> 
    <style name="AppThemeApp" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
     <item name="android:textColor">#002AFF</item> 
     <item name="android:layout_width">match_parent</item> 
     <item name="android:layout_height">wrap_content</item> 
    </style> 
    <style name="AppThemeAct" parent="Theme.AppCompat.Light.DarkActionBar"> 
     <item name="colorPrimary">@color/colorPrimary</item> 
     <item name="colorPrimaryDark">@color/colorPrimaryDark</item> 
     <item name="colorAccent">@color/colorAccent</item> 
     <item name="android:textColor">#002AFF</item> 
    </style> 
    <style name="stl_button" parent="@android:style/TextAppearance.Medium"> 
     <item name="android:layout_width">match_parent</item> 
     <item name="android:layout_height">wrap_content</item> 
     <item name="android:textColor">#002AFF</item> 
     <item name="android:typeface">serif</item> 
    </style> 
    <style name="stl_button.bold"> 
     <item name="android:textStyle">bold</item> 
    </style> 
</resources> 

这是我的布局/ main.xml中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <Button 
     android:id="@+id/cmd_OpenPlaces" 
     style="@style/stl_button.bold" 
     android:text="@string/str_cmdOpenPlaces" /> 
    <Button 
     android:id="@+id/OpenSettings" 
     style="@style/stl_button" 
     android:text="@string/str_cmdOpenSettings" /> 
</LinearLayout> 

,这是我的manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.programs.squik.myplaces"> 
    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppThemeApp"> 
     <activity 
      android:name=".MainActivity"> 
      <intent-filter> 
       <action 
        android:name="android.intent.action.MAIN" /> 
       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity 
      android:name=".EditPlacesActivity"> 
     </activity> 
    </application> 
</manifest> 

风格对于OpenSettings看起来不错;然而,cmd_OpenPlaces的抱怨没有layout_width和height,但是这应该从stl_button继承。

我得到这个

<Button> does not set the required layout_heigth attribute... 

我缺少什么?

谢谢

+0

这不是抱怨任何我测试过你的代码。 – Nepster

+0

谢谢。我忘了添加清单,因为你说它没有给你的问题,我去了并摆弄它,显然我的问题是主题的名称。它不会采用AppThemeApp。它必须是AppTheme。现在的问题是如何定义多个主题并使用它们中的任何一个?我觉得我仍然错过了一些东西。我应该能够定义多个主题。 – user2368631

+0

在创建AppThemeApp和AppThemeAct时创建主题,并在清单中的活动标记中设置主题。或者也可以通过编程方式设置主题。您可以一次将一个主题与某个活动相关联。并确保您创建的主题适合您的活动。因为某些活动需要actionBar,所以不要在没有actionBar的情况下使用任何主题 – Nepster

回答

0

嗯,我想我的问题。

android studio编辑器在布局设计视图上有一个工具,它将布局与主题相关联,无论我在清单中有什么,并且它还根据分配给它的主题验证布局的xml。

这就是为什么它给错误;但是,一旦我安装并运行应用程序,它工作得很好。它也解释了为什么布局设计不会根据我在清单上设置的内容而改变。