android自定义导航栏

在做一个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();
        }
    });
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值