android 自定义文本组合控件



--布局
<?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);
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值