访问自定义布局的内部视图的属性

时间:2011-08-08 11:35:26

标签: android layout

我创建了一个自定义布局,其中包含一个TextView和一个扩展LinearLayout的Spinner(称为LabeledSpinner)。 我把几个LabeledSpinners放到我的主RelativeLayout中,显然我想为每个textview设置不同的文本,但我不知道如何在xml文件中做到这一点。

我需要以某种方式帮助访问内部视图的属性。 我试图使用[包名] .LabeledSpinner.label:文本但它不起作用

(标签是textview的id)

1 个答案:

答案 0 :(得分:1)

使LabeledSpinner成为一个样式(res / values / attrs.xml)

<declare-styleable name="LabeledSpinner">
    <attr name="text" format="string"/>
</declare-styleable>

在LabeledSpinner中

public LabeledSpinner(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.LabeledSpinner);
    String text = a.getString(R.styleable.LabeledSpinner_text);
    a.recycle();
}

请注意,text中的LabeledSpinner属性将用作LabeledSpinner_text

现在在您的布局中

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:yourpackage="http://schemas.android.com/apk/res/com.package">
    <com.package.LabeledSpinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        yourpackage:text="This is where your text goes"/>
</LinearLayout>

应该这样做!