android 组合控件-属性获取

--属性文件   values下新建atrrs.xml

<?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>  -->

     <declare-styleable name="control_textbox_attrs">
<attr name="title"  format="string"  /><!-- 标题 -->
<attr name="enabled"  format="boolean" />
<attr name="title_width"  format="string"/><!-- 标题宽度 -->
 <attr name="InputType"  format="string"/> 
 <attr name="value"  format="string"/>
</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  文本框控件,建化布局
//缺点:目前取属性都是用的系统有的属性,用自己命名的属性一直取不到,原因不明。
//目前这种控件也满足需求,后期找出原因有修正
//20160126  直接从attrs中取值  qk
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;
private String           strInputType;//输入类型:数字 or 文本
private String              strNameSpace="http://schemas.android.com/apk/res/kd.scan";
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= attrs.getAttributeBooleanValue(strNameSpace, "enabled", true);
  
      strWidth= attrs.getAttributeValue(strNameSpace, "title_width");
      if(!(strWidth==null)){
      strWidth=strWidth.replace("dp", "");
     intTextbox_width=(int) Float.parseFloat(strWidth);
     intTextbox_width=mypublicfunction.dip2px(context, intTextbox_width);//转化成pix
      }else{
      intTextbox_width=-1;
      }
      strTextbox_title=attrs.getAttributeValue(strNameSpace, "title");
      strInputType=attrs.getAttributeValue(strNameSpace, "InputType");
      if(strInputType==null){
       strInputType="文本";
      }
      strValue=attrs.getAttributeValue(strNameSpace, "value");
    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(strInputType.equals("数字")){
     control_textbox_text.setInputType(InputType.TYPE_CLASS_NUMBER  | InputType.TYPE_NUMBER_FLAG_DECIMAL);
     control_textbox_text.setGravity(Gravity.RIGHT);

    }
    control_textbox_text.setText(strValue);
   
    }catch(Exception e){
     Toast.makeText(context, e.getMessage().toString(), Toast.LENGTH_SHORT).show(); 
     e.getCause();
    }
}
//  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);
 }
}



--调用

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:mycontrol="http://schemas.android.com/apk/res/kd.scan"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/loginback"
    >
         <kd.scan.Control_Textbox
             android:id="@+id/wccc"
             android:layout_width="300dp"
             android:layout_height="wrap_content"
             mycontrol:title="供应商:"
             
             mycontrol:title_width="100dp"
            
             
             ></kd.scan.Control_Textbox>


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值