自定义Toolbar
来源:互联网 发布:linux服务定时启动 编辑:程序博客网 时间:2024/04/26 12:02
步骤:
1、继承toolbar,实现构造方法
2、拷贝包含包名的全路径到activity_main.xml中
3、编写要挂载到toolbar的xml文件
4、在attr文件中自定义属性
5、在自定义toolbar的java文件中init()方法挂载xml,构造方法中读取属性值并初始化要挂载的控件。然后设置监听。
xml文件代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content"> <EditText android:id="@+id/toolbar_searchview" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_gravity="center" android:layout_centerVertical="true" android:gravity="center" android:drawableLeft="@mipmap/icon_search" style="@style/search_view" android:hint="请输入搜索内容" android:visibility="gone" /> <TextView android:id="@+id/toolbar_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_gravity="center" android:gravity="center" android:textColor="@color/white" android:textSize="20sp" android:visibility="gone" /> <ImageButton android:id="@+id/toolbar_rightButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:visibility="gone" style="@android:style/Widget.Material.Toolbar.Button.Navigation" /></RelativeLayout>
attr文件代码:
<?xml version="1.0" encoding="utf-8"?><resources> <declare-styleable name="CnToolbar"> <attr name="rightButtonIcon" format="reference"/> <attr name="isShowSearchView" format="boolean"/> </declare-styleable></resources>
java文件代码:
public class CnToolbar extends Toolbar { private LayoutInflater mInflater; private View mView; private TextView mTextTitle; private EditText mSearchView; private ImageButton mRightImageButton; public CnToolbar(Context context) { this(context,null); } public CnToolbar(Context context, AttributeSet attrs) { this(context, attrs, 0); } public CnToolbar(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initView(); setContentInsetsRelative(10,10); if(attrs !=null) {//读取属性值 final TintTypedArray a = TintTypedArray.obtainStyledAttributes(getContext(), attrs, R.styleable.CnToolbar, defStyleAttr, 0); final Drawable rightIcon = a.getDrawable(R.styleable.CnToolbar_rightButtonIcon); if (rightIcon != null) { setRightButtonIcon(rightIcon); } boolean isShowSearchView = a.getBoolean(R.styleable.CnToolbar_isShowSearchView,false); if(isShowSearchView){ showSearchView(); hideTitleView(); } a.recycle(); } } private void initView() {//挂载布局 if(mView == null) { mInflater = LayoutInflater.from(getContext()); mView = mInflater.inflate(R.layout.toolbar, null); mTextTitle = (TextView) mView.findViewById(R.id.toolbar_title); mSearchView = (EditText) mView.findViewById(R.id.toolbar_searchview); mRightImageButton = (ImageButton) mView.findViewById(R.id.toolbar_rightButton); LayoutParams lp = new LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL); addView(mView, lp); } } public void setRightButtonIcon(Drawable icon){//设置toolbar右边按钮图片 if(mRightImageButton !=null){ mRightImageButton.setImageDrawable(icon); mRightImageButton.setVisibility(VISIBLE); } } public void setRightButtonOnClickListener(OnClickListener li){//设置右边按钮监听mRightImageButton.setOnClickListener(li); } @Override public void setTitle(int resId) { setTitle(getContext().getText(resId)); } @Override public void setTitle(CharSequence title) { initView(); if(mTextTitle !=null) { mTextTitle.setText(title); showTitleView(); } } public void showSearchView(){ if(mSearchView !=null) mSearchView.setVisibility(VISIBLE); } public void hideSearchView(){ if(mSearchView !=null) mSearchView.setVisibility(GONE); } public void showTitleView(){ if(mTextTitle !=null) mTextTitle.setVisibility(VISIBLE); } public void hideTitleView() { if (mTextTitle != null) mTextTitle.setVisibility(GONE); }//// private void ensureRightButtonView() {// if (mRightImageButton == null) {// mRightImageButton = new ImageButton(getContext(), null,// android.support.v7.appcompat.R.attr.toolbarNavigationButtonStyle);// final LayoutParams lp = generateDefaultLayoutParams();// lp.gravity = GravityCompat.START | (Gravity.VERTICAL_GRAVITY_MASK);// mRightImageButton.setLayoutParams(lp);// }// }}
0 0
- 自定义toolbar
- 自定义toolbar
- 自定义ToolBar
- 自定义ToolBar
- 自定义ToolBar
- 自定义ToolBar
- 自定义Toolbar
- 自定义Toolbar
- 自定义toolbar
- 自定义toolbar
- 自定义toolbar
- 自定义ToolBar
- 自定义toolbar
- Adnroid Toolbar 自定义Toolbar布局
- jsf自定义toolbar组件
- jsf自定义toolbar组件
- jsf自定义toolbar组件
- jsf自定义toolbar组件
- RTKLIB: An Open Source Program Package for GNSS Positioning
- 当数据列表里的属性值过长时可以
- Android TV开发总结(一)构建一个TV app前要知道的事儿
- Android4.4 Camera HAL startpreview的具体过程
- Android studio 多渠道打包(超简洁版)
- 自定义Toolbar
- Java遍历HashMap并修改(remove)
- Remove Duplicates from Sorted List(去除有序链表中的重复元素)
- 网络序?本地序?傻傻分不清楚。。。
- 使用activeMQ发送邮件
- cocos-js 学习小记
- Web 页中的JavaScript相对路径
- ztouch练习 1
- mysql的添加,删除表字段