TextView的Android自定义属性

时间:2013-01-16 14:29:20

标签: java android attributes

  

可能重复:
  How to read custom attributes in Android

最近我读到了自定义属性。我想为TextView添加自定义属性。

到目前为止,我有:

attr文件:

<resources>
    <attr name="binding" format="string" />
    <declare-styleable name="TextView">
        <attr name="binding" />
    </declare-styleable>

布局文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
     xmlns:custom="http://schemas.android.com/apk/res/de.innosoft.android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

        <TextView
            custom:binding="test"/>

给定TextView

TextView tv = ...

我如何获得该属性的值(这是“测试”)?我读到了关于obtainStyledAttributes但不知道如何在这里使用它。

2 个答案:

答案 0 :(得分:5)

确切地说,你可以扩展你的文本视图

 public class CustomTV extends TextView {

 public final String YOURATTRS;

 public CustomTV(Context context, AttributeSet attrs) {
    super(context, attrs);
            TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.CustomTV);
    YOURATTRS = ta.getString(R.styleable.CustomTV_binding);
    ta.recycle();

 // use your attrs or not
 }

和attrs.xml:

<declare-styleable name="CustomTV">
     <attr name="binding" format="string"/>
</declare-styleable>

答案 1 :(得分:3)

据我所知,你有两个选择:

  • 创建自己的视图,扩展TextView,并具有AttributeSet的构造函数。然后,您可以在此构造函数中获取自定义属性。查看本教程:Creating a View Class
  • 在您处理自定义属性的位置实现自己的LayoutInfalter.Factory

最好检查一下这个问题:How to read custom attributes in Android它几乎一样。