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>