android顶部标题app_name,如何写一个app通用的title

我先上xml:<?xml  version="1.0" encoding="utf-8"?>

xmlns:android="http://schemas.android.com/apk/res/android"

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="@dimen/title_height">

android:id="@+id/baselayout_iv_left"

android:layout_width="wrap_content"

android:layout_centerVertical="true"

android:scaleType="center"

style="@style/title_bar_common_style"

android:class="lazyload" src="https://img-blog.csdnimg.cn/2022010612595075722.png" data-original="@drawable/nav_btn_back" />

android:id="@+id/baselayout_tv_title"

android:layout_centerInParent="true"

android:gravity="center"

android:singleLine="true"

android:maxWidth="240dip"

android:text="@string/app_name"

style="@style/title_bar_common_style"

android:textColor="@color/white_a"

android:textSize="@dimen/text_size_20" />

android:id="@+id/baselayout_iv_right"

android:layout_width="wrap_content"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:scaleType="center"

style="@style/title_bar_common_style"

tools:visibility="visible"

android:visibility="gone" />

android:id="@+id/baselayout_tv_left"

android:gravity="center"

android:maxWidth="240dip"

android:singleLine="true"

style="@style/title_bar_common_style"

android:textColor="@color/white_a"

android:textSize="@dimen/text_size_16"

android:visibility="gone"

tools:visibility="visible"/>

android:id="@+id/baselayout_tv_right_yunqi"

android:layout_alignParentRight="true"

android:gravity="right|center_vertical"

android:maxWidth="240dip"

android:singleLine="true"

style="@style/title_bar_common_style"

android:textColor="@color/white_a"

android:textSize="@dimen/text_size_16"

android:visibility="visible" />

然后上代码:public class TitleBarCommon extends RelativeLayout {

private TextView mTvTitle, mTvLeft, mTvRight;

private ImageView mIvLeft, mIvRight;

private View mTitleContainer;

private Context context;

public TitleBarCommon(Context context) {

this(context, null);

}

public TitleBarCommon(Context context, AttributeSet attrs) {

super(context, attrs);

this.context = context;

this.mTitleContainer = LayoutInflater.from(context).inflate( R.layout.activity_base_header_common, this,true);

init();

}

public void init() {

mTvTitle = (TextView) mTitleContainer.findViewById(R.id.baselayout_tv_title);

mIvLeft = (ImageView) mTitleContainer.findViewById(R.id.baselayout_iv_left);

mTvLeft = (TextView) mTitleContainer.findViewById(R.id.baselayout_tv_left);

mIvRight = (ImageView) mTitleContainer.findViewById(R.id.baselayout_iv_right);

mTvRight = (TextView) mTitleContainer.findViewById(R.id.baselayout_tv_right_yunqi);

}

private LayoutInflater mLayoutInflater;

public void setLayoutInflater(LayoutInflater inflater){

mLayoutInflater = inflater;

}

/**自定义头部**/

public void setCustomTitleBar(int customTitleLayoutId){

if (customTitleLayoutId <=0) {

this.setVisibility(View.GONE);

return ;

}

removeAllViews();

View baseHead;

if(mLayoutInflater!=null){

baseHead = mLayoutInflater.inflate(customTitleLayoutId, null);

}else{

baseHead = View.inflate(context,customTitleLayoutId, null);

}

RelativeLayout.LayoutParams params=new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);

addView(baseHead,params);

}

/**自定义头部**/

public void setCustomTitleBar(View baseHead){

if (baseHead == null) {

this.setVisibility(View.GONE);

return ;

}

removeAllViews();

//        View baseHead = View.inflate(context,customTitleLayoutId, null);

LayoutParams params=new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.MATCH_PARENT);

addView(baseHead,params);

}

/**

* 右TextView 文字

*

* @param

* @return

*/

public TitleBarCommon setRightTextViewString(String text) {

if (!TextUtils.isEmpty(text)) {

mTvRight.setText(text);

mTvRight.setVisibility(View.VISIBLE);

} else {

mTvRight.setVisibility(View.GONE);

}

return this;

}

/**

* 设置右TextView点击事件

*

* @param lsnr

* @return

*/

public TitleBarCommon setRightTextViewListener(OnClickListener lsnr) {

mTvRight.setOnClickListener(lsnr);

return this;

}

}

这样使用这个title,我们看一个activity的layout:<?xml  version="1.0" encoding="utf-8"?>

xmlns:app="http://schemas.android.com/apk/res-auto"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:background="@color/white_a"

xmlns:tools="http://schemas.android.com/tools"

android:orientation="vertical">

android:id="@+id/head_common_layout"

android:layout_width="match_parent"

android:layout_height="44dp"

android:background="@color/red_bn"

android:gravity="center_vertical"/>

android:id="@+id/news_home_listview"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:divider="@null"

android:fadingEdge="none"

android:footerDividersEnabled="true"

android:listSelector="@color/trans_color"

android:scrollbars="none"

android:scrollingCache="false" />

private void initTitle() {

TitleBarCommon titleBarCommon = (TitleBarCommon)findViewById(R.id.head_common_layout);

titleBarCommon.setRightTextViewString("增加");

titleBarCommon.setRightTextViewListener(new View.OnClickListener() {

@Override

public void onClick(View v) {

Toast.makeText(TestHttpActivity.this,"aaa",Toast.LENGTH_LONG).show();

}

});

}

从这个代码可以看出几个有意思的地方,因为这个view本身继承RelateviewLayout,所以根节点为merge,这样可以少一层嵌套

还有看一下方法setCustomTitleBar,这个方法去除了这个view本身的layout,然后可以set自己的layout,就有很大的通用性

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值