3

可能重复:
如何在 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 = ...

那么我将如何获得该属性的值(即“测试”)?我阅读了有关 gainStyledAttributes 的信息,但不知道如何在这里使用它。

4

2 回答 2

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>
于 2013-01-16T14:46:32.427 回答
3

据我所知,您有两种选择:

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

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

于 2013-01-16T14:34:02.053 回答