【问题标题】:setSupportActionBar with custom Material theme具有自定义 Material 主题的 setSupportActionBar
【发布时间】:2017-03-16 21:40:36
【问题描述】:

我正在尝试将自定义操作栏添加到自定义材料 Android 主题。

问题是,为了使 Theme 工作,我的 MainActivity 需要扩展 Activity,而 setSupportActionBar 方法需要 MainActivity 扩展 AppCompatActivity。

这是我的 MainActivity:

import android.app.Activity;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.Toolbar;
import android.view.Menu;

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar myToolbar = (Toolbar) findViewById(R.id.myToolbar);
    setSupportActionBar(myToolbar);
}

我的 ActivityMain.xml

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="start"
    android:orientation="vertical">
    <android.support.v7.widget.Toolbar
        android:id="@+id/myToolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="@color/ap_main_dark"
        android:elevation="4dp"
        android:theme="@style/ThemeOverlay.AppCompat.ActionBar" />
</LinearLayout>

我的风格

<style name="AjudarOPeixe" parent="android:Theme.Material.Light.NoActionBar" >
    <item name="android:colorAccent">@color/ap_red</item>
    <item name="android:navigationBarColor">@color/ap_main</item>
    <item name="android:statusBarColor">@color/ap_main_dark</item>
    <item name="android:colorPrimary">@android:color/background_light</item>
    <item name="android:textColorPrimary">@android:color/background_dark</item>
</style>

【问题讨论】:

    标签: java android xml


    【解决方案1】:

    您需要使用 AppCompat 主题:

    <style name="AjudarOPeixe" parent="Theme.AppCompat.Light.NoActionBar">
        <item name="colorAccent">@color/ap_red</item>
        <item name="navigationBarColor">@color/ap_main</item>
        <item name="statusBarColor">@color/ap_main_dark</item>
        <item name="colorPrimary">@android:color/background_light</item>
        <item name="textColorPrimary">@android:color/background_dark</item>
    </style>
    

    然后你可以让 MainActivity 扩展 AppCompatActivity:

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Toolbar myToolbar = (Toolbar) findViewById(R.id.myToolbar);
            setSupportActionBar(myToolbar);
        }
    }
    

    【讨论】:

    • 非常感谢!我担心使用 AppCompat 所有的 Material Design 都会消失,但显然资源仍然存在。
    猜你喜欢
    • 1970-01-01
    • 2020-05-09
    • 2018-11-11
    • 2019-02-06
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 2021-11-14
    相关资源
    最近更新 更多