我想在LinearLayout的背景上使用?attr/colorPrimary
属性,但它每次都是透明的。我在默认值文件夹中定义了所有颜色和主题。我支持API 8到21并使用AppCompat-21。仅在通过代码设置颜色时才有效。有人有想法吗?
修改
的themes.xml
<style name="AppBaseTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="actionBarStyle">@style/Widget.ActionBar.Blue</item>
<item name="android:windowContentOverlay">@android:color/transparent</item>
<item name="android:windowBackground">@color/card_background</item>
</style>
<style name="AppTheme" parent="AppBaseTheme">
</style>
<style name="MyAppTheme" parent="AppBaseTheme">
...
<item name="colorPrimary">@color/dukes_blue_dark</item>
<item name="colorAccent">@color/accent_yellow_200</item>
</style>
layout.xml
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?attr/colorPrimary"
android:orientation="vertical" >
<include layout="@layout/include_toolbar" />
<de.wackernagel.playball.views.SlidingTabLayout
android:id="@+id/sliding_tabs"
android:layout_width="match_parent"
android:layout_height="48dp"
android:background="?attr/colorPrimary"
app:contentInsetStart="56dp"
app:indicatorHeight="2dp"
app:selectedColor="?attr/colorAccent" />
</LinearLayout>
</FrameLayout>
的manifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.android"
android:versionCode="5"
android:versionName="1.4" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="20" />
<application
android:allowBackup="true"
android:name=".PlayBallApplication"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".RulesActivity"
android:label="@string/app_name"
android:theme="@style/MyAppTheme"
android:parentActivityName=".MainActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".MainActivity" />
</activity>
<activity
android:name=".RuleDetailsActivity"
android:label="@string/app_name"
android:theme="@style/MyAppTheme"
android:parentActivityName=".RulesActivity" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".RulesActivity" />
</activity>
</application>
</manifest>
编辑2:
这是关于我的问题的更新。
android:background="?attr/colorPrimary"
android:background="@color/dukes_blue_dark"
view.setBackgroundColor(
getResources().getColor( R.color.dukes_blue_dark ) );
编辑3:
好了,现在我知道更多,并找到一种黑客的方式来着色我的观点。 我认为我的主题没有以正确的方式应用到我的第三个Activity(Main-&gt; Rules-&gt; RuleDetails)。 所以我复制我的洞主题,重命名并仅将其应用于我的RuleDetailsActivity。现在它有效。我也尝试将新主题提供给我的应用程序,但之后不再应用它。
所以我的解决方案看起来像这样:
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowBackground">@android:color/white</item>
<item name="android:textColorPrimary">@android:color/white</item>
<item name="windowActionBar">false</item>
<item name="colorPrimary">@color/dukes_blue_dark</item>
<item name="colorAccent">@color/accent_yellow_200</item>
</style>
<style name="PlayBallTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:windowBackground">@android:color/white</item>
<item name="android:textColorPrimary">@android:color/white</item>
<item name="windowActionBar">false</item>
<item name="colorPrimary">@color/dukes_blue_dark</item>
<item name="colorAccent">@color/accent_yellow_200</item>
</style>
</resources>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="de.wackernagel.playball"
android:versionCode="5"
android:versionName="1.4" >
<application
android:allowBackup="true"
android:name=".PlayBallApplication"
android:icon="@drawable/ic_launcher_play_ball"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
...
<activity
android:name=".RuleDetailsActivity"
android:theme="@style/PlayBallTheme"
android:label="@string/app_name" >
<meta-data
android:name="android.support.PARENT_ACTIVITY"
android:value=".RulesActivity" />
</activity>
</application>