1. 去掉Android自带TitleBar
在styles.xml中新建 style
<style name="notitle" parent="android:Theme">
<item name="android:windowNoTitle">true</item>
</style>
在AndroidManifest.xml中相应的Activity标签中使用该style
<activity
android:name=".MainActivity"
android:theme="@style/notitle"
>
2. 编写TitleBar 布局xml文件 my_title.xml
<com.coco.view.MyTitleBar
xmlns:android:=http://shemes.android.com/apk/res/android"
android:id="@+id/my_title"
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#ffffff"
android:orientation="horizontal">
<LinearLayout
android:layout_width="50dp"
android:layout_height="match_parent"
android:id="@+id/mytitle_left"
android:orientation="vertical"
android:gravity="center"
android:layout_alignParentLeft="true"/>
<LinearLayout
android:layout_width="50dp"
android:layout_height="match_parent"
android:id="@+id/mytitle_center"
android:orientation="vertical"
android:gravity="center"
android:layout_toRightOf="@id/mytitle_left"/>
<LinearLayout
android:layout_width="50dp"
android:layout_height="match_parent"
android:id="@+id/mytitle_right"
android:orientation="vertical"
android:gravity="center"
android:layout_alignParentRight="true"/>
</com.coco.view.MyTitleBar>
3. 编写MyTitleBar 类 继承RelativeLayout
并在onFinishInflate方法中给各view赋值
public class MyTitleBar extends RelativeLayout{
LinearLayout leftView;
LinearLayout centerView;
LinearLayout rightView;
public MyTitleBar(Context context){
super(context);
}
protected void onFinishInflate(){
super.onFinishInflate();
leftView = (LinearLayout) findViewById(R.id.mytitle_left);
centerView = (LinearLayout) findViewById(R.id.mytitle_center);
rightView = (LinearLayout) findViewById(R.id.mytitle_right);
}
public void addLeftView(View view){
if(leftView != null){
leftView.addView(view);
}
}
public void addCenterView(View view){
if(lcenterView != null){
centerView.addView(view);
}
}
public void addRightView(View view){
if(rightView != null){
rightView.addView(view);
}
}
}
}
4. 在activity_main.xml布局文件中include my_title.xml
<include layout="@layout/my_title"></include>
5. 在MainActivity中使用该TitleBar
MyTitleBar myTitleBar;
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
myTitleBar = (myTitleBar) findViewById(R.id.my_title);
TextView tv = new TextView(this);
tv.setText("Hello Left view");
myTitleBar.addLeftView(tv);
}