材质颜色属性是透明的

时间:2015-03-16 18:55:46

标签: android android-appcompat material-design

我想在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>

0 个答案:

没有答案