在做一个app应用时,一般标题栏大致都是相同的。然后今天特意整理了一下,设置一下应该就像通用的了,应该都能用上的,特别简单,本人比较懒所以Demo里面出现的都是Textview大致能实现功能就好,然后其他的功能就自己加吧
先上布局文件吧!
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:background="#62596b" android:layout_height="wrap_content"> <View android:id="@+id/ID_SHOW_VIEW" android:layout_width="0.05dp" android:visibility="gone" android:layout_height="70dp"/> <RelativeLayout android:layout_width="match_parent" android:background="#62596b" android:layout_alignBottom="@+id/ID_SHOW_VIEW" android:layout_height="50dp"> <TextView android:id="@+id/ID_2" android:layout_width="wrap_content" android:gravity="center" android:layout_centerHorizontal="true" android:layout_height="match_parent" android:text="测试标题栏"/> <TextView android:id="@+id/ID_1" android:layout_width="wrap_content" android:layout_height="match_parent" android:gravity="center" android:text="返回"/> <TextView android:id="@+id/ID_3" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_alignParentRight="true" android:gravity="center" android:text="时间"/> </RelativeLayout> </RelativeLayout>
然后写一个随便建一个类然后继承RelativeLayout
public class NewBarActivity extends RelativeLayout implements View.OnClickListener{ public NewBarActivity(Context context) { super(context); } private TextView title1,title2,title3; public NewBarActivity(Context context, AttributeSet attrs) { super(context, attrs); View view= LayoutInflater.from(context).inflate(R.layout.activity_bar,this,true); title1= (TextView) view.findViewById(R.id.ID_1);//返回 title2= (TextView) view.findViewById(R.id.ID_2);//标题 title3= (TextView) view.findViewById(R.id.ID_3);//时间 title1.setOnClickListener(this); title3.setOnClickListener(this); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { //如果使用了侵入式标题栏的话 判断手机api是否大于或等于KITKAT 因为KITKAT以下的版本是不支持侵入式标题栏的 如果是KITKAT或以上版本 //Bar的高度就调高一点,其实调不调都影响功能只是美观度而已 view.findViewById(R.id.ID_SHOW_VIEW).setVisibility(View.VISIBLE); }else{ view.findViewById(R.id.ID_SHOW_VIEW).setVisibility(View.GONE); } } //设置标题 public void setTitle2(String string){ title2.setText(string); } //如果这个是选择时间的按钮可输入选择的时间显示 public void setTitle3(String string){ title3.setText(string); } public NewBarActivity(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } //设置回调接口 private ClickTitle clickTitle; public void setClickTitle(ClickTitle clickTitle){ this.clickTitle=clickTitle; } public interface ClickTitle{ void onBack(); void onData(); } @Override public void onClick(View v) { switch (v.getId()){ case R.id.ID_1: clickTitle.onBack(); break; case R.id.ID_3: clickTitle.onData(); break; } } }
调用
private void initSetNewBar(){ NewBarActivity mbar= (NewBarActivity) findViewById(R.id.ID_SHOW_BAR); mbar.setTitle2("che试二"); mbar.setTitle3("2000-01-01"); mbar.setClickTitle(new NewBarActivity.ClickTitle() { @Override public void onBack() { Toast.makeText(HomeActivity.this,"返回。--",Toast.LENGTH_SHORT).show(); } @Override public void onData() { Toast.makeText(HomeActivity.this,"时间。--",Toast.LENGTH_SHORT).show(); } }); }