1

我正在寻找一种在 android 中覆盖我自己的 XML 视图的方法。所以我只需要指定一次设置(如背景、边框、默认内容) - 并再次使用它。

问题是我找不到任何关于它的东西。(我发现的东西是关于在 XML 中使用 java 类来覆盖,这不是我想要的)

这是一些不起作用的代码,但我希望它对您解释得足够好:

main.xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <field android:text="@string/str1" />
    <field android:text="@string/str2" />
    <field android:text="@string/str3" />
    <field android:text="@string/str4" />
    <field android:text="@string/str5" />
</LinearLayout>

code representing field (field.xml):
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/field"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@layout/field_background"
    android:text="@string/default_string"/>

如您所见,字段本身已通过一次自定义定义并多次使用。(另一个字符串作为文本集)

这根本不起作用,但我希望有人知道一种方法来使这样的事情起作用。(无需编码,只需 XML)

谢谢,丹尼斯

4

3 回答 3

2

我建议你设置一个样式。在某些文件(通常是styles.xml)中res/values,为您的字段添加样式:

<style name="DefaultTextFieldStyle">
    <item name="android:id">@+id/field</item>
    <item name="android:layout_width">fill_parent</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:background">@layout/field_background</item>
</style>

然后在main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">
    <TextView style="@style/DefaultTextFieldStyle"
        android:text="@string/str1" />
    <TextView style="@style/DefaultTextFieldStyle"
        android:text="@string/str2" />
    <TextView style="@style/DefaultTextFieldStyle"
        android:text="@string/str3" />
    <TextView style="@style/DefaultTextFieldStyle"
        android:text="@string/str4" />
    <TextView style="@style/DefaultTextFieldStyle"
        android:text="@string/str5" />
</LinearLayout>

我刚刚复制了您的值,但是android:id在布局中为多个视图设置相同的值是错误的,并且将布局作为背景很奇怪。

于 2012-08-01T15:29:59.297 回答
0

我不知道如何在没有代码的情况下做你想做的事。我会定义我自己的自定义组件。另请参阅自定义样式定义的不同 Textview 的不同格式,其中显示了如何设置 TextViews 的样式,这可能是您想要的。

于 2012-08-01T15:29:16.700 回答
0

这里不需要自定义组件。如果我理解您的问题,样式应该足以满足您的需求。

只需在 LinearLayout 中定义一系列 TextView,并让它们从您可以定义的样式中继承公共部分(layout_widthlayout_height等),如下所述

唯一改变的部分将是android:text,根据需要

于 2012-08-01T15:29:45.147 回答