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);
}
});
}
}
自定义View之组合view例加减器
最新推荐文章于 2019-05-05 19:47:00 发布