大家好,我是奶綠茶,
今天來分享如何客制化 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
留言