zoukankan      html  css  js  c++  java
  • day 6

    学习简单的自定义控件

    顶端导航栏的自定义实现

    package Home.widget;
    
    import android.annotation.SuppressLint;
    import android.content.Context;
    import android.graphics.drawable.Drawable;
    import android.os.Build;
    import android.view.Gravity;
    
    import androidx.annotation.RequiresApi;
    import androidx.appcompat.widget.TintTypedArray;
    import android.widget.Toolbar;
    import android.util.AttributeSet;
    import android.view.Gravity;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.EditText;
    import android.widget.ImageButton;
    import android.widget.TextView;
    import android.widget.Toolbar;
    
    import com.example.expressdelivery.R;
    
    /**
     * Created by Ivan on 15/9/28.
     */
    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public class CnToolbar extends Toolbar {
    
    
    
        private LayoutInflater mInflater;
    
        private View mView;
        private TextView mTextTitle;
        private EditText mSearchView;
        private ImageButton mRightImageButton;
    
    
        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
        public CnToolbar(Context context) {
           this(context,null);
        }
    
        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
        public CnToolbar(Context context, AttributeSet attrs) {
            this(context, attrs, 0);
        }
    
        @SuppressLint("RestrictedApi")
        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
        public CnToolbar(Context context, AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
    
    
    
            initView();
            setContentInsetsRelative(10,10);
    
    
    
    
            if(attrs !=null) {
                @SuppressLint("RestrictedApi") final TintTypedArray a = TintTypedArray.obtainStyledAttributes(getContext(), attrs,
                        R.styleable.CnToolbar, defStyleAttr, 0);
    
    
                @SuppressLint("RestrictedApi") final Drawable rightIcon = a.getDrawable(R.styleable.CnToolbar_rightButtonIcon);
                if (rightIcon != null) {
                    //setNavigationIcon(navIcon);
                    setRightButtonIcon(rightIcon);
                }
    
    
                @SuppressLint("RestrictedApi") 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){
    
            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);
    //        }
    //    }
    
    
    }
    <?xml version="1.0" encoding="utf-8"?>
    
    <RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        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="@drawable/icon_search"
            style="@style/search_view"
            android:hint="请输入搜索内容"
            android:layout_marginRight="60dp"
            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"
            tools:targetApi="lollipop" />
    
    </RelativeLayout>

    效果

  • 相关阅读:
    springboot 之JPA
    Oracle数据库安装
    Pytho之Django
    springboot之docker化
    opencv之dlib库人脸识别
    opencv之调用摄像头
    springboot之多模块化项目打包
    python学习笔记2--list
    ETL测试
    Mockserver -MOCO的使用
  • 原文地址:https://www.cnblogs.com/chenaiiu/p/13461231.html
Copyright © 2011-2022 走看看