我正在寻找一种在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)
谢谢, 丹尼斯
答案 0 :(得分: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
值是错误的,将布局作为背景是很奇怪的。
答案 1 :(得分:0)
我不知道如何在没有代码的情况下做你想做的事情。我会定义自己的custom component。另请参阅Different formats for different Textview defined by Custom style,其中显示了如何设置TextViews的样式,这可能是您想要的。
答案 2 :(得分:0)
此处无需自定义组件。如果我理解你的问题,风格应该足以做你想要的。
只需在LinearLayout中定义一系列TextViews,让它们从您可以定义的样式here继承公共部分(layout_width
,layout_height
等)。
根据需要,唯一不断变化的部分是android:text