如何使用AppCompat实现此主题?

时间:2015-02-06 20:29:45

标签: android android-layout android-activity android-fragments android-styles

我正在尝试为一个人创建这个主题,而我只是其中一个活动:

enter image description here

因为我正在学习这种风格是如何工作的,现在我开始意识到我们有更多不同的风格。 android中的样式与整个宇宙中的原子不相容。所以我试图从这个网站上学习:http://jgilfelt.github.io/android-actionbarstylegenerator

但是,当我尝试在使用AppCompat的项目中应用其主题时,我得到了

    java.lang.IllegalStateException: You need to use a Theme.AppCompat theme (or descendant) with this activity.

错误类型。

我在我的选项卡式活动中从 ActionBarActivity 延伸,我现在感觉不安全(有人建议扩展 Activity 来解决此问题),因为之前的帖子我被建议使用AppCompat, ActionBarActivity 似乎与AppCompat有关。

我花了我一周的谷歌搜索解决方案,我遇到了这些问题:




但是,到目前为止,这就是我现在所拥有的:

enter image description here

所以,我无法做的唯一事情是

  • 将徽标放在屏幕的左上角(在操作栏中),只会影响此特定活动的操作栏,(完成)

  • 使橙色条显示选中的选项卡。

如何以最简单的方式实现这一目标?

这是我的values / style.xml文件:

<resources>

    <!-- Base application theme. -->
    <style name="SmartCampusTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="colorPrimary">@color/actionbar_bg_color</item>
    </style>

    <style name="GenericProgressIndicator" parent="@android:style/Widget.ProgressBar.Small">
        <item name="android:layout_width">wrap_content</item>
        <item name="android:layout_height">wrap_content</item>
        <item name="android:indeterminate">true</item>
    </style>

</resources>

我的AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="greensmartcampus.eu.smartcampususerfeedbackapp">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:logo="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/SmartCampusTheme">
        <!-- Splash screen while connecting to the web-server -->
        <activity
            android:name=".HomeScreen"
            android:label="@string/title_activity_home_screen"
            android:parentActivityName=".AbstractPortraitActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="greensmartcampus.eu.smartcampususerfeedbackapp.AbstractPortraitActivity" />
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!-- The activity where all actions take place -->
        <activity
            android:name=".ControlActivity"
            android:label="@string/title_activity_home_screen"
            android:parentActivityName=".AbstractPortraitActivity">
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="greensmartcampus.eu.smartcampususerfeedbackapp.AbstractPortraitActivity" />
        </activity>
    </application>

</manifest>

*聚苯乙烯。有趣的是,最新的Android Studio如何为标签式活动生成弃用的代码,然后抱怨它被弃用,好像这是你的错...

enter image description here

重要提示:我是MVC和模块化牧师(OSGi从业者)的忠实粉丝。所以我希望如果所有这些样式解决方案都包含在样式和绘制XML文件中(如果我正确回忆它们应该是这样),布局信息都包含在我的布局文件中,而我的java文件只包含有关行为的代码。例如,我可以通过 getSupportActionBar()。setDisplayShowHomeEnabled(true)显示带有java的操作栏图标,但在java中插入与布局相关的内容会破坏MVC模式。此外,我上面提到的网站可以使用动作栏中的图标创建布局,而无需使用单个java行。我只需要知道如何用AppCompat完成,显然我正在使用它,因为其他解决方案已被弃用。

0 个答案:

没有答案