android自带的导航栏太难看了,不如自定义一个导航栏好看。如下图:
首先在MainActivity.java的Oncreat中添加如下代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//声明使用自定义标题
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);
/**
* 判断android的版本号4.4以上才可以设置沉浸式主题
*/
if(Integer.valueOf(android.os.Build.VERSION.SDK)>=19) {
//动态设置主题
this.setTheme(R.style.MyCustomTheme);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
/**
* 让位于装置最上方的状态lie (Status Bar) 以及最下方的导航列 (Navigation Bar) 可以被透明化,
* 并让 APP 的layout布局内容可以往上下延伸,使整个画面的可被利用度大幅提升。
*/
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
}else{
this.setTheme(R.style.MyCustomTheme1);
}
setContentView(R.layout.activity_two);
//自定义布局赋值
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.custom_title);
//导航栏上的按钮添加响应事件
Button titleBackBtn = (Button)findViewById(R.id.TitleBackBtn);
titleBackBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(TwoActivity.this,"hello",Toast.LENGTH_LONG).show();
}
});
}
动态设置主题用到的styles如下:
<!-- 导航栏 -->
<style name="TitleBarBackground">
<item name="android:background">#33b5e5</item>
</style>
<!-- 4.4导航栏 -->
<style name="MyCustomTheme" parent="android:Theme.Light">
<item name="android:windowTitleBackgroundStyle">@style/TitleBarBackground</item>
<item name="android:windowTitleSize">77dp</item>
</style>
<!-- 版本低于4.4导航栏 -->
<style name="MyCustomTheme1" parent="android:Theme.Light">
<item name="android:windowTitleBackgroundStyle">@style/TitleBarBackground</item>
<item name="android:windowTitleSize">50dp</item>
</style>
自定义布局中引入的layout如下:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/head_center_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:layout_alignParentBottom="true"
android:text="我是导航栏"
android:textSize="20sp"
android:layout_marginBottom="10dp"
/>
<ImageView
android:id="@+id/head_left_text"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentLeft="true"
android:layout_alignParentBottom="true"
android:layout_marginLeft="0dp"
android:background="@drawable/lorry"
android:layout_alignBottom="@+id/TitleBackBtn"/>
<Button
android:id="@+id/TitleBackBtn"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:text="我是按钮"
android:textColor="#ff6501"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:background="#01000000"/>
</RelativeLayout>
其中通过设置按钮背景为透明实现跟可点击的textview一个效果:
android:background="#01000000"
相关参考:关于状态栏透明等等、状态栏一体化、自定义标题栏