自定义组件 获取属性值

public LineEditText(Context context, AttributeSet attrs) {
  super(context, attrs);
  //获取labelText属性的值,labelText有两种方法赋值:
  //labelText="@string/hello"和labelText="姓名:"
  //如果以第一种方式赋值时,取到的resourceId的值为R.string.hello的id,如果以第二种方式赋值时,取到的resourceId的值是0,就是第三个参数
  int resourceId = attrs.getAttributeResourceValue(null, "labelText", 0);
  //判断如果以labelText="姓名:"方式赋值时,需要用attrs.getAttributeValue(String namespace,String name)方法获取属性值
  if(resourceId == 0)
  {
   //没有定义namespace所以第一个参数为null,第二个参数为组件的属性名称

   labelText = attrs.getAttributeValue(null, "labelText");
  }
  //判断是否以labelText="@string/hello"方式赋值
  else
  {
   //获取资源文件,根据资源id获取属性值
   labelText = getResources().getString(resourceId);
  }
  //如果labelText的值为null表示没有赋值,这里表示必须要个labelText属性赋值,否则抛出异常
  if(labelText == null)
  {
   throw new RuntimeException("必须设置labelText属性");
  }
 

 

<com.seeu1000.LineEditText
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        labelText="@string/hello"
        labelFontSize="16"
        labelPosition="left"
        >
    </com.bekeer.LabelEditText>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值