Android笔记——组合控件实现自定义View之可清空内容的EditText

之前用输入框时是用的别人的框架MaterialEditText,但看该框架似乎没有一键清空输入框的功能,所以迫不得已自己写了一个。
一开始想是自定义View,要用Java动态写各个控件的布局等等,觉得很麻烦,后来发现可以先在layout里写控件的布局,然后用类继承RelativeLayout(前面写的布局是用的RelativeLayout)并加载写好的组合控件就可以实现自定义View。

1.public_edittext

首先是组合控件的代码和实现效果




    
    
    


效果图.png

2.PublicEdit.java

然后编写一个class继承RelativeLayout,再加载public_edittext,并为该控件编写自定义属性。
自定义的属性首先要在values中创建attrs.xml文件,并在里面编写具体的自定义属性。




    
        
        
        
    

自定义View的源码如下。

package com.mils.banke.publicWidget;

import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.mils.banke.R;

public class PublicEdit extends RelativeLayout {

    private TextView txt_tip;
    private ImageView img_empty;
    private EditText edt_content;
    private String tip;
    private Boolean empty;
    private String hint;

    public void initView(Context context){
        View.inflate(context, R.layout.public_edittext, this);
        txt_tip = (TextView)findViewById(R.id.txt_tip);
        img_empty = (ImageView)findViewById(R.id.img_empty);
        edt_content = (EditText)findViewById(R.id.edt_content);
    }


    public PublicEdit(Context context) {
        super(context);
        initView(context);
    }

    public PublicEdit(Context context, AttributeSet attrs) {
        super(context, attrs);
        initView(context);
        TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.PublicEdit);
        tip = ta.getString(R.styleable.PublicEdit_tip);
        empty = ta.getBoolean(R.styleable.PublicEdit_empty, false);
        hint = ta.getString(R.styleable.PublicEdit_hint);
        initWidget(tip,empty, hint);
    }

    public PublicEdit(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        initView(context);
    }

    private void setContentHint(String hint){
        edt_content.setHint(hint);
    }

    private void initWidget(String tip, Boolean empty, String hint){
        txt_tip.setText(tip);
        if (empty){
            img_empty.setVisibility(VISIBLE);
            img_empty.setOnClickListener(new OnClickListener() {
                @Override
                public void onClick(View v) {
                    edt_content.setText("");
                }
            });
        }
        else
            img_empty.setVisibility(GONE);
        edt_content.setHint(hint);
    }
}

3.控件使用




    

    
    

    

    

    

    

4.实现效果

实现效果

你可能感兴趣的:(Android笔记——组合控件实现自定义View之可清空内容的EditText)