自定义View之组合view例加减器

package com.example.desktop_77ma6t9.kaoshi;

import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;

/**
 * @作者 任百慧
 * @时间 2017/11/1 11:23
 */

public class AddDeleteView extends LinearLayout {

    Integer number;
    private TextView txtDelete;
    private TextView txtAdd;
    private EditText et_number;
    private OnAddDelClickLstener lister;

//定义一个对外开放的接口
        interface OnAddDelClickLstener{
            void onAddClick(View v);
            void onDelClick(View v);
        }
        public void setOnAddDelClickLstener(OnAddDelClickLstener lister){
            if(lister!=null){
                this.lister = lister;
            }
        }

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

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

    public AddDeleteView(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.zuhe,this);
        txtDelete = (TextView) findViewById(R.id.txt_delete);
        txtAdd = (TextView) findViewById(R.id.txt_add);
        et_number = (EditText) findViewById(R.id.et_number);

        TypedArray typeArray = context.obtainStyledAttributes(attrs,R.styleable.AddDeleteViewStyle);
        String leftText = typeArray.getString(R.styleable.AddDeleteViewStyle_left_text);
        String rightText = typeArray.getString(R.styleable.AddDeleteViewStyle_right_text);
        int rightTextColor = typeArray.getColor(R.styleable.AddDeleteViewStyle_right_text_color, Color.RED);
        String middText = typeArray.getString(R.styleable.AddDeleteViewStyle_midd_text);

        txtDelete.setText(leftText);
        txtAdd.setText(rightText);
        txtAdd.setTextColor(rightTextColor);
        et_number.setText(middText);
        typeArray.recycle();

        txtDelete.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.e("AddDeleteView","点击了减号");
                lister.onDelClick(view);
            }
        });
        txtAdd.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View view) {
                Log.e("txtAdd","点击了加号");
                lister.onAddClick(view);
            }
        });


    }
    /**
     * 对外提供设置EditText值的方法
     *
     * @param number
     */
    public void setnumber(int number){
        if(number>0){
            et_number.setText(number+"");
        }

    }

    /**
     * 得到控件原来的值
     *
     * @return
     */
    public int getnumber(){
        int number = 0;
        try {
            String numberStr = et_number.getText().toString().trim();
           number = Integer.valueOf(numberStr);

        }catch (Exception e){
            number=0;
        }
        return number;
    }
}

//布局
//创建一个.xml文件
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="horizontal">

<Button
        android:id="@+id/txt_delete"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="-"
                android:textSize="20dp"/>
<EditText
        android:id="@+id/et_number"

                android:layout_width="100dp"
                android:gravity="center"
                android:layout_height="wrap_content"
                android:text="1"

                />
<Button
        android:id="@+id/txt_add"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="+"
                android:textSize="20dp"/>
</LinearLayout>

//创建一个类  写上面所有代码
//activity_main.xml 添加zuhe控件布局
<com.example.desktop_77ma6t9.kaoshi.AddDeleteView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:left_text="减"
        app:right_text="加"
        app:midd_text="1"
        android:id="@+id/adv">

</com.example.desktop_77ma6t9.kaoshi.AddDeleteView>

//在MainActivity中 调用AddDeleteView类
        package com.example.desktop_77ma6t9.kaoshi;

        import android.support.v7.app.AppCompatActivity;
        import android.os.Bundle;
        import android.view.View;

public class MainActivity extends AppCompatActivity {

    private AddDeleteView adv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        adv = (AddDeleteView)findViewById(R.id.adv);
        adv.setOnAddDelClickLstener(new AddDeleteView.OnAddDelClickLstener() {
            @Override
            public void onAddClick(View v) {
                int getnumber = adv.getnumber();
                getnumber++;
                adv.setnumber(getnumber);
            }

            @Override
            public void onDelClick(View v) {
                int getnumber = adv.getnumber();
                getnumber--;
                adv.setnumber(getnumber);
            }
        });
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值