簡體   English   中英

工具欄將不會顯示在“活動”中

[英]Toolbar won't display in Activity

我在AndroidManifest.xml NoActionBar應用程序主題設置為NoActionBar ,因為我只想在活動中添加工具欄和一些片段,因此我願意為這些對象手動設置它。

<application
    android:allowBackup="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/Theme.AppCompat.Light.NoActionBar">
    <activity
        android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

我為工具欄tb.xml了一個視圖

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.Toolbar 
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/toolbar"
android:layout_height="?attr/actionBarSize"
android:layout_width="match_parent"
android:layout_alignParentTop="true"
android:background="@color/colorPrimary"
app:popupTheme="@style/ThemeOverlay.AppCompat.Light">

<TextView
    android:id="@+id/tvTitle"
    android:text="Main"
    android:textColor="@color/white"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    style="@style/TextAppearance.AppCompat.Widget.ActionBar.Title"
    android:layout_gravity="center" />

<ImageView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/ivBell"
    android:background="@drawable/bell"
    android:layout_gravity="right"
    android:layout_marginRight="10dp"
    android:layout_alignParentEnd="true"
    android:layout_alignParentRight="true" />
</android.support.v7.widget.Toolbar>

這是我在活動中設置的方法:

 Toolbar toolbar = (Toolbar) getLayoutInflater().inflate(R.layout.main_toolbar, null);
 setSupportActionBar(toolbar);
 getSupportActionBar().setDisplayShowTitleEnabled(false);

但是當我啟動我的應用程序時,它沒有顯示-任何想法可能是什么問題?

試試下面的代碼:

在你的style.xml

    <!-- Base application theme. -->
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
        <!-- Customize your theme here. -->
        <item name="colorPrimary">@color/colorPrimary</item>
        <item name="colorPrimaryDark">@color/colorAccent</item>
        <item name="colorAccent">@color/colorAccent</item>
        <item name="android:splitMotionEvents">false</item>
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
    </style>

在您的AndroidMenifest.xml

<application
    android:allowBackup="false"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

在您的Activity.javaBaseActivity.java文件中,添加以下方法並在onCreate調用它,或者您可以將方法的代碼直接放入Activity.java的onCreate

public void setUpToolbar(String strTitle) {
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);
        ActionBar actionBar = getSupportActionBar();
        if (actionBar != null) {
            actionBar.setDisplayShowTitleEnabled(false);
            actionBar.setDisplayHomeAsUpEnabled(false);
            title = (TextView) toolbar.findViewById(R.id.tvTitle);
            title.setText(strTitle);
        }
    }

注意:不要忘記在活動的.xml文件中包含tb.xml文件

Fragment.javaBaseFragment.java文件中,添加以下方法並在onCreateView調用它,或者您可以將方法的代碼直接放入Fragment.java的onCreateView

public void setupToolBarWithBackArrow(Toolbar toolbar, @Nullable String Title) {
        ActionBar actionBar;
        // If you are using BaseActivity.java then keep below code as it is otherwise replace BaseActivity with Your Activity's name
        ((BaseActivity) getActivity()).setSupportActionBar(toolbar);
        actionBar = ((BaseActivity) getActivity()).getSupportActionBar();

        if (actionBar != null) {
            actionBar.setDisplayHomeAsUpEnabled(true);
            actionBar.setDisplayShowTitleEnabled(false);
            actionBar.setHomeAsUpIndicator(R.drawable.ic_back); // Set null if you don't want to show back arrow
        }
        // Remove this click listener if you set null in setHomeAsUpIndicator(...)
        toolbar.setNavigationOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                mActivity.onBackPressed();
            }
        });
        title = (TextView) toolbar.findViewById(R.id.title);
        title.setText(Title != null ? Title : "");
    }

注意:不要忘記在片段的.xml文件中包含tb.xml文件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM