カスタムActionBar
今日は試合が終わったばかりなので、コードを書かないで、まとめましょう.実はactionbarはもう時代遅れで、googleはtoolbarを使って代替することをお勧めしていますが、まだ多くの互換性の問題があるような気がします.仕方なく、androidはオープンソースすぎて、各メーカーが修正しています.androidの相性はとても面倒なことです.時間を割いてactionbarをカスタマイズする準備をします.しかし、現在のプロジェクトではこの機能が使われており、当時も多くの穴に遭遇したことがあるので、まとめてみましょう.書き始めたばかりの頃、郭神のブログを参考にしたことがある.郭神翻訳のブログ郭神翻訳の2番目のブログは直接訪問することができます.
まずAndroid mainfestに次のコードを入れます.
そして新しいthemesを作成します.xml
あとでactionbarを建てることができますlayout.xmlタイトルバーのレイアウト
新しいmenuを作成できます.xmlは、actionbarのアイコン表示に使用され、ここでは検索ボックスが使用され、他の類似しています.
次に、対応するactivityで、対応するコードを使えばいいです.例えば、
これで使えます.
しかし、卵が痛いという問題があります.actionbar Overflowボタンが表示されない場合です.郭神のブログには説明がありますが、携帯電話には表示できないものもあります.だからしばらく待っていると、actionbarのテンプレートをカスタマイズしなければなりません.まあ、そうしましょう.実は中にはたくさんの知識があります.したがって、ActionBarをカスタマイズする必要があります.
まず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をカスタマイズする必要があります.