自定义View

来源:互联网 发布:java 项目开发 图 编辑:程序博客网 时间:2024/05/29 18:58

//主界面

package com.example.myapplication;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.setOnAddDelClickListener(new AddDeleteView.OnAddDelClickListener() {            @Override            public void onAddClick(View v) {                int origin = adv.getNumble();                origin++;                adv.setNumble(origin);            }            @Override            public void onDelClick(View v) {                int origin = adv.getNumble();                origin--;                adv.setNumble(origin);            }        });    }}
//添加View
package com.example.myapplication;import android.content.Context;import android.content.res.TypedArray;import android.support.annotation.Nullable;import android.util.AttributeSet;import android.view.View;import android.widget.EditText;import android.widget.LinearLayout;import android.widget.TextView;/** * author:Created by WangZhiQiang on 2017/11/1. */public class AddDeleteView extends LinearLayout {    private TextView delete;    private TextView add;    private EditText numble;    private OnAddDelClickListener listener;    interface OnAddDelClickListener{        void onAddClick(View v);        void onDelClick(View v);    }    public void setOnAddDelClickListener(OnAddDelClickListener listener){        if(listener != null){            this.listener = listener;        }    }    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.adddeleteview,this);        TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.AddDeleteViewStyle);        delete = (TextView)findViewById(R.id.delete);        numble = (EditText)findViewById(R.id.numble);        add = (TextView)findViewById(R.id.add);                String left_text = typedArray.getString(R.styleable.AddDeleteViewStyle_left_text);        String right_text = typedArray.getString(R.styleable.AddDeleteViewStyle_right_text);        String middle_text = typedArray.getString(R.styleable.AddDeleteViewStyle_middle_text);        delete.setText(left_text);        numble.setText(middle_text);        add.setText(right_text);        //回收        typedArray.recycle();        delete.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                listener.onDelClick(v);            }        });        add.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                listener.onAddClick(v);            }        });    }    public void setNumble(int num){        if(num > 0){            numble.setText(num + "");        }    }    public int getNumble(){        int numb = 0 ;        try {            String numberStr = numble.getText().toString().trim();            numb = Integer.valueOf(numberStr);        } catch (Exception e) {            numb = 0 ;        }        return numb;    }}
//xml
<LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    xmlns:add="http://schemas.android.com/apk/res-auto"    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"    android:layout_height="wrap_content" tools:context="com.example.myapplication.MainActivity"    android:orientation="vertical"    >    <com.example.myapplication.AddDeleteView        android:id="@+id/adv"        android:layout_width="match_parent"        android:layout_height="100dp"        add:left_text=""        add:right_text=""        add:middle_text="3"    />

//自定义view样式
<?xml version="1.0" encoding="utf-8"?><LinearLayout    xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="horizontal"    android:layout_width="match_parent"    android:layout_height="wrap_content">    <TextView        android:id="@+id/delete"        android:layout_width="50dp"        android:layout_height="50dp"        android:text="-"        android:textSize="30dp"        android:padding="10dp"/>    <EditText        android:id="@+id/numble"        android:layout_width="50dp"        android:layout_height="50dp"        android:textSize="30dp"        android:text="1"/>    <TextView        android:id="@+id/add"        android:layout_width="50dp"        android:layout_height="50dp"        android:text="+"        android:textSize="30dp"        android:padding="10dp"/></LinearLayout>



原创粉丝点击