自定义View

创建资源文件

<declare-styleable name="TopBar">
        <attr name="leftBackGroud" format="reference"></attr>
        <attr name="rightBackGroud" format="reference"></attr>
        <attr name="titleText" format="string"></attr>
        <attr name="titleTextColor" format="color"></attr>
        <attr name="titleTextSize" format="dimension"></attr>
    </declare-styleable>

 

topbar布局

<Button
        android:id="@+id/leftButton"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_alignParentLeft="true"
        android:layout_centerVertical="true"
        android:layout_marginLeft="5dp" />

    <TextView
        android:id="@+id/titleText"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_centerHorizontal="true"
        android:gravity="center" />

    <Button
        android:id="@+id/rightButton"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_alignParentRight="true"
        android:layout_centerVertical="true"
        android:layout_marginRight="5dp" />

ToBar类

public class TopBar extends RelativeLayout {

    private TextView titleTextView;
    private Button leftButton;
    private Button rightButton;
    private TypedArray typedArray;
    private LeftAndRightBtn listener;

    public TopBar(Context context) {
        super(context);
    }

    public void setBtnListener(LeftAndRightBtn listener){
        this.listener = listener;
    }

    public interface LeftAndRightBtn{
        void leftBtnLisener();
        void rightBtnLisener();
    }

    //设置左边按钮的可见性
    public void setLeftButton(boolean flag){
        if (flag){
            leftButton.setVisibility(View.VISIBLE);
        }else{
            leftButton.setVisibility(View.GONE);
        }
    }
    //设置左边按钮的可见性
    public void setRightButton(boolean flag){
        if (flag){
            rightButton.setVisibility(View.VISIBLE);
        }else{
            rightButton.setVisibility(View.GONE);
        }
    }

    public TopBar(Context context, AttributeSet attrs) {
        super(context, attrs);
        LayoutInflater.from(context).inflate(R.layout.topbar_layout, this);
        leftButton = findViewById(R.id.leftButton);
        titleTextView = findViewById(R.id.titleText);
        rightButton = findViewById(R.id.rightButton);
        leftButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (listener!=null){
                    listener.leftBtnLisener();
                }
            }
        });
        rightButton.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                if (listener!=null){
                    listener.rightBtnLisener();
                }
            }
        });

        typedArray = context.obtainStyledAttributes(attrs, R.styleable.NiuHTopBar);
        int leftBackGroud = typedArray.getResourceId(R.styleable.NiuHTopBar_leftBackGroud, 0);
        int rightBackGroud = typedArray.getResourceId(R.styleable.NiuHTopBar_rightBackGroud, 0);
        String titleText = typedArray.getString(R.styleable.NiuHTopBar_titleText);
        int titleTextColor = typedArray.getColor(R.styleable.NiuHTopBar_titleTextColor, 0);
        int titleTextSize = typedArray.getDimensionPixelSize(R.styleable.NiuHTopBar_titleTextSize, 0);
        typedArray.recycle();
        leftButton.setBackgroundResource(leftBackGroud);
        rightButton.setBackgroundResource(rightBackGroud);
        titleTextView.setText(titleText);
        titleTextView.setTextColor(titleTextColor);
        titleTextView.setTextSize(titleTextSize);
    }

    public TopBar(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
    }

    public TopBar(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
    }
}

类布局

 <com.example.skr.week2_20190105.view.TopBar
            android:id="@+id/topbar"
            android:layout_width="wrap_content"
            android:layout_height="60dp"
            app:leftBackGroud="@drawable/back"
            app:rightBackGroud="@drawable/right"
            app:titleText="首页"
            app:titleTextColor="#0f0"
            app:titleTextSize="18sp">
        </com.example.skr.week2_20190105.view.TopBar>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值