--布局
<?xml version="1.0" encoding="utf-8"?>
<resources>
<declare-styleable name="control_textbox_attrs">
<attr name="android:text" /><!-- 标题 -->
<attr name="android:enabled" />
<attr name="android:minWidth"/><!-- 标题宽度 -->
<attr name="android:tag"/> <!-- 如果是文本,可以不管,如果是数字,需录入数字, -->
</declare-styleable>
</resources>
--代码
package kd.scan;
import android.content.Context;
import android.content.res.TypedArray;
import android.text.InputType;
import android.util.AttributeSet;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
//qk 20160115 文本框控件,建化布局
//缺点:目前取属性都是用的系统有的属性,用自己命名的属性一直取不到,原因不明。
//目前这种控件也满足需求,后期找出原因有修正
public class Control_Textbox extends RelativeLayout{
//控件
private TextView control_textbox_title;
private EditText control_textbox_text;
//变量
private String strTextbox_title;
private String strWidth;
private boolean blnEnabled;
private int intTextbox_width;
private String strValue;
public Control_Textbox(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
try{
TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.control_textbox_attrs);
blnEnabled= a.getBoolean(R.styleable.control_textbox_attrs_android_enabled,true );
strWidth=(String) a.getText(R.styleable.control_textbox_attrs_android_minWidth);//属性文件中按dp赋值
if(!(strWidth==null)){
strWidth=strWidth.replace("dip", "");
intTextbox_width=(int) Float.parseFloat(strWidth);
intTextbox_width=mypublicfunction.dip2px(context, intTextbox_width);//转化成pix
}else{
intTextbox_width=-1;
}
String strtemp=(String) a.getText(R.styleable.control_textbox_attrs_android_tag);
if(strtemp==null || strtemp.equals("")){
strtemp="文本,";
}
String[] strTag=strtemp.split(",");
strTextbox_title=(String) a.getText(R.styleable.control_textbox_attrs_android_text);
a .recycle();
LayoutInflater inflater=(LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
inflater.inflate(R.layout.control_textbox, this);
control_textbox_title=(TextView)findViewById(R.id.control_textbox_title);
control_textbox_text=(EditText)findViewById(R.id.control_textbox_text);
if(intTextbox_width!=-1){
control_textbox_title.setWidth(intTextbox_width);
}
control_textbox_title.setText(strTextbox_title);
control_textbox_text.setEnabled(blnEnabled);
if(strTag[0].equals("数字")){
control_textbox_text.setInputType(InputType.TYPE_CLASS_NUMBER | InputType.TYPE_NUMBER_FLAG_DECIMAL);
control_textbox_text.setGravity(Gravity.RIGHT);
}
}catch(Exception e){
Toast.makeText(context, e.getMessage().toString(), Toast.LENGTH_SHORT).show();
e.getCause();
}
}
//取值赋值方法
public void SetTextboxValue(String value){
this.strValue=value;
control_textbox_text.setText(value);
}
public String GetTextBoxValue(){
return this.strValue;
}
public void SetTextBoxEnable(Boolean blnEnable){
control_textbox_text.setEnabled(blnEnable);
}
}