カスタムActionBar


今日は試合が終わったばかりなので、コードを書かないで、まとめましょう.実はactionbarはもう時代遅れで、googleはtoolbarを使って代替することをお勧めしていますが、まだ多くの互換性の問題があるような気がします.仕方なく、androidはオープンソースすぎて、各メーカーが修正しています.androidの相性はとても面倒なことです.時間を割いてactionbarをカスタマイズする準備をします.しかし、現在のプロジェクトではこの機能が使われており、当時も多くの穴に遭遇したことがあるので、まとめてみましょう.書き始めたばかりの頃、郭神のブログを参考にしたことがある.郭神翻訳のブログ郭神翻訳の2番目のブログは直接訪問することができます.
まずAndroid mainfestに次のコードを入れます.
<application
        android:allowBackup="true"
        android:icon="@mipmap/logo"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:theme="@style/CustomActionBarTheme">

そして新しいthemesを作成します.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <!--parent="@android:style/Theme.Holo.Light.DarkActionBar"-->
    <!--              -->
    <style name="CustomActionBarTheme" parent="@android:style/Theme.Holo.Light"> <item name="android:actionBarStyle">@style/MyActionBar</item> <!--   overflow        --> <item name="android:actionOverflowButtonStyle">@style/MyOverFlowButton</item> <!--   overflow items          style --> <item name="android:dropDownListViewStyle">@style/MyDropDownListView</item> <item name="android:homeAsUpIndicator">@mipmap/ic_action_back</item> </style>
    <!-- ActionBar    -->
    <style name="MyActionBar" parent="@android:style/Widget.Holo.Light.ActionBar"> <item name="android:background">#3A9E5E</item> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <!--  ActionBar      --> <item name="android:titleTextStyle">@style/ActionBarTextStyle</item> </style>
    <!--Android3.0   ActionBar     -->
    <style name="ActionBarTextStyle" parent="@android:style/TextAppearance.Holo.Widget.ActionBar.Title"> <item name="android:textColor">#FFFFFF</item> </style>
    <!--Android3.0     overflow        -->
    <style name="MyOverFlowButton" parent="@android:style/Widget.Holo.ActionButton.Overflow"> <item name="android:src">@mipmap/ic_action_overflow</item> </style>
    <!--Android3.0     overflow items          style-->
    <style name="MyDropDownListView" parent="@android:style/Widget.Holo.Light.ListView.DropDown"> <item name="android:listSelector">#18B4ED</item> <item name="android:background">#FFFFFF</item> </style>
</resources>

あとでactionbarを建てることができますlayout.xmlタイトルバーのレイアウト
<?xml version="1.0" encoding="utf-8"?>
<com.zhy.android.percent.support.PercentLinearLayout 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="wrap_content" android:gravity="center">

    <TextView  android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="  " app:layout_marginLeftPercent="2%" android:textColor="#FFFFFF" app:layout_textSizePercent="40%"/>

    <TextView  android:id="@+id/actionbar_Text" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:textColor="#FFFFFF" app:layout_marginLeftPercent="25%" app:layout_textSizePercent="45%" />
</com.zhy.android.percent.support.PercentLinearLayout>

新しいmenuを作成できます.xmlは、actionbarのアイコン表示に使用され、ここでは検索ボックスが使用され、他の類似しています.
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto">
    <item  android:id="@+id/search" android:icon="@mipmap/ic_action_search" android:showAsAction="always" android:title="    " />
</menu>

次に、対応するactivityで、対応するコードを使えばいいです.例えば、
        getActionBar().setHomeButtonEnabled(true);
        getActionBar().setDisplayHomeAsUpEnabled(true);
        getActionBar().setDisplayShowHomeEnabled(false);
        getActionBar().setDisplayShowCustomEnabled(true);
        getActionBar().setDisplayShowTitleEnabled(false);
        View actionBar_layout =                 LayoutInflater.from(this).inflate(R.layout.actionbar_layout, null);
        getActionBar().setCustomView(actionBar_layout);
        actionbar_contact_Text.setText("    ");

これで使えます.
しかし、卵が痛いという問題があります.actionbar Overflowボタンが表示されない場合です.郭神のブログには説明がありますが、携帯電話には表示できないものもあります.だからしばらく待っていると、actionbarのテンプレートをカスタマイズしなければなりません.まあ、そうしましょう.実は中にはたくさんの知識があります.したがって、ActionBarをカスタマイズする必要があります.