android自定义view控件和自定义更改控件内容

package com.example.customview;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.support.annotation.Nullable;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * Created by Administrator on 2017/11/1 0001.
 */
//自定义的类用于继承LinearLayout
public class AddDeleteActivity extends LinearLayout{
    private TextView tv_delete;
    private TextView tv_add;
    private EditText et_number;
    private OnAddDeleteClickListen listen;
    private Button btn_mine;

    //写接口用于调用这里面的方法
    interface OnAddDeleteClickListen{
        void addClick(View v);
        void deleteClick(View v);
    }
    //将实现接口与参数listen绑定到一起
    public void setOnAddDeleteClickListen(OnAddDeleteClickListen listen)
    {
        this.listen = listen;
    }

    public AddDeleteActivity(Context context) {
        this(context,null);
    }

    public AddDeleteActivity(Context context, @Nullable AttributeSet attrs) {
        this(context, attrs,0);
    }

    public AddDeleteActivity(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView(context, attrs, defStyleAttr);
    }

    private void initView(Context context, AttributeSet attrs, int defStyleAttr) {
        View.inflate(context,R.layout.car_add_delete,this);
        tv_add = (TextView)findViewById(R.id.tv_add);
        tv_delete = (TextView)findViewById(R.id.tv_delete);
        et_number = (EditText)findViewById(R.id.et_number);
        btn_mine = (Button)findViewById(R.id.btn_mine);
        tv_add.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                listen.addClick(view);
            }
        });
        tv_delete.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                listen.deleteClick(view);
            }
        });
        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.AddDeleteStyle);
        String left_text = typedArray.getString(R.styleable.AddDeleteStyle_left_text);
        String right_text = typedArray.getString(R.styleable.AddDeleteStyle_right_text);
        String center_text = typedArray.getString(R.styleable.AddDeleteStyle_center_text);
        int color = typedArray.getColor(R.styleable.AddDeleteStyle_btn_custom, Color.BLUE);
        tv_add.setText(right_text);
        tv_delete.setText(left_text);
        typedArray.recycle();
    }
    public int getNumber()
    {
        String trim = et_number.getText().toString().trim();
        int integer = Integer.valueOf(trim);
        return integer;
    }
    public void setNumber(int number)
    {
        Log.e("----","李海生"+number);
        if(number<0)
        {
            et_number.setText(0+"");
        }else
        {
            et_number.setText(number+"");
        }
    }
}
 
 
 
 
//在values中自定义的类型
 
 
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="AddDeleteStyle">
        <attr name="left_text" format="string"/>
        <attr name="right_text" format="string"/>
        <attr name="center_text" format="string"/>
        <attr name="btn_custom" format="color"/>
    </declare-styleable>
</resources>

//在主方法的布局中调用自定义View
 
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" tools:context="com.example.customview.MainActivity">
    <com.example.customview.AddDeleteActivity
        android:id="@+id/ada"
        android:layout_width="match_parent"
        app:right_text="加"
        app:left_text="减"
        android:layout_height="wrap_content"/>
</LinearLayout>

猜你喜欢

转载自blog.csdn.net/dealpoor/article/details/78420802