大家好,我是奶綠茶,
今天來分享如何客制化 Android 的 Title Bar
先看預設的樣式
接著改變 Style, 變成水果風
先製作 title 的 layout, my_title.xml
style.xml
寫一個 Abstract 類別方便其他的 Activity 使用 其中要多判斷是否要出現 Back 鍵。
轉載請註明出處
SourceCodeDownload
今天來分享如何客制化 Android 的 Title Bar
先看預設的樣式
接著改變 Style, 變成水果風
先製作 title 的 layout, my_title.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content"> <Button style="@style/title_bar_button_back" android:id="@+id/back_btn" android:layout_marginLeft="5dp" android:text="Back" /><!-- 這裡是 Back 鍵 --> <TextView style="@style/title_bar_text" android:id="@+id/title_txt" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:text="Title" /> </RelativeLayout>
style.xml
<style name="my_theme" parent="@android:style/Theme.Light"> <item name="android:windowContentOverlay">@null</item> <item name="android:windowTitleSize">40.0dip</item> <item name="android:windowBackground">@drawable/iphone_bg</item> <item name="android:windowTitleBackgroundStyle">@style/window_title_background_style</item> <item name="android:buttonStyle">@style/buttonStyle</item> </style> <style name="buttonStyle" parent="@android:style/Widget.Button"> <item name="android:layout_centerVertical">true</item> <item name="android:layout_width">wrap_content</item> <item name="android:layout_height">wrap_content</item> <item name="android:minWidth">60dp</item> <item name="android:textSize">16sp</item> <item name="android:textColor">#ffffffff</item> <item name="android:shadowColor">#FF000000</item> <item name="android:shadowDx">0</item> <item name="android:shadowDy">-1</item> <item name="android:shadowRadius">0.2</item> <item name="android:background">@drawable/ui_navigation_bar_default_button</item> </style> <style name="title_bar_button_back" parent="@style/buttonStyle"> <item name="android:background">@drawable/ui_navigation_bar_default_button_back</item> </style> <style name="window_title_background_style"> <item name="android:gravity">center_vertical</item> <item name="android:layout_width">fill_parent</item> <item name="android:layout_height">fill_parent</item> <item name="android:background">@drawable/iphone_title_bar_blue</item> </style> <style name="title_bar_text"> <item name="android:textColor">#ffffff</item> <item name="android:textSize">24sp</item> <item name="android:shadowColor">#FF000000</item> <item name="android:shadowDx">0</item> <item name="android:shadowDy">-1</item> <item name="android:shadowRadius">0.2</item> </style>然後在 AndroidManifest.xml, 指定 theme 而程式碼的部份,
寫一個 Abstract 類別方便其他的 Activity 使用 其中要多判斷是否要出現 Back 鍵。
private TextView mTitleTextView; private Button mBackBtn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_CUSTOM_TITLE); setContentView( getLayoutId() ); getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.my_title); mBackBtn = (Button) findViewById(R.id.back_btn); mBackBtn.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { finish(); } }); Intent intent = getIntent(); String action = intent.getAction(); if(action!=null){ if (action.equals(Intent.ACTION_MAIN)) { mBackBtn.setVisibility(View.INVISIBLE); } } } protected abstract int getLayoutId(); @Override public void setTitle(CharSequence title) { if(mTitleTextView==null){ mTitleTextView = (TextView)findViewById(R.id.title_txt); } mTitleTextView.setText(title); }
轉載請註明出處
SourceCodeDownload
留言