安卓自定义顶部导航栏
2018-07-24 本文已影响0人
wcdd
1、第一步新建MyToolBar.java
import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.TypedArray;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.tangzhuozhuan.mz.R;
public class MyToolBar extends LinearLayout {
private String titleTextStr;
private TitleOnClickListener titleOnClickListener;
private TextView tool_title;
public MyToolBar(Context context) {
this(context, null);
}
public MyToolBar(Context context, AttributeSet attrs) {
this(context, attrs, 0);
}
public MyToolBar(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
//TypedArray是一个数组容器用于存放属性值
@SuppressLint("CustomViewStyleable") TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.MyBar);
int count = ta.getIndexCount();
for (int i = 0; i < count; i++) {
int attr = ta.getIndex(i);
switch (attr) {
case R.styleable.MyBar_titleText:
titleTextStr = ta.getString(R.styleable.MyBar_titleText);
break;
}
}
//用完务必回收容器
ta.recycle();
//获取布局
View view = LayoutInflater.from(context).inflate(R.layout.toolbar_layout, this);
initView(view);
}
private void initView(View view) {
LinearLayout tool_back = (LinearLayout) view.findViewById(R.id.tool_back);
tool_title = (TextView) view.findViewById(R.id.tool_title);
if (titleTextStr != null){
tool_title.setText(titleTextStr);
}
tool_back.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
if (titleOnClickListener != null) {
titleOnClickListener.onBackClick();
}
}
});
}
public void setTitle(String title) {
if (!TextUtils.isEmpty(title)) {
tool_title.setText(title);
}
}
/**
* 设置标题的点击监听
*
* @param titleOnClickListener
*/
public void setOnTitleClickListener(TitleOnClickListener titleOnClickListener) {
this.titleOnClickListener = titleOnClickListener;
}
/**
* 监听标题点击接口
*/
public interface TitleOnClickListener {
/**
* 返回按钮的点击事件
*/
void onBackClick();
}
}
2、在arrts.xml里面添加需要定义的属性
<declare-styleable name="MyBar">
<attr name="titleText" format="string" />
</declare-styleable>
image.png
3、在需要用到的地方
<com.test.mz.view.MyToolBar
android:id="@+id/my_tool"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:titleText="设置"/>
4、代码里面使用
my_tool = (MyToolBar) findViewById(R.id.my_tool);
my_tool.setOnTitleClickListener(new MyToolBar.TitleOnClickListener() {
@Override
public void onBackClick() {
//点击返回上一级
finish();
}
});