1

I am looking for a way to override my own XML view in android. So I only have to specify settings (like background, border, default content) once - and use it again.

The problem is that I can't find anything about it. (The things I found are about using a java class in XML to override, this is not what I want)

This is some non-working code, but I hope it explains it well enough to you:

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"/>

As you see field itself is once defined and used many times with one customization. (Another string as text set)

This doesn't work at all, but I hope someone knows a way to make something like this work. (Without coding, just XML)

Thanks, Dennis

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 のさまざまな形式も参照してください。これは、必要な TextView のスタイルを設定する方法を示しています。

于 2012-08-01T15:29:16.700 に答える
0

ここではカスタム コンポーネントは必要ありません。私があなたの質問を理解していれば、スタイルはあなたが探しているものを実行するのに十分なはずです.

LinearLayout 内で一連の TextViews を定義し、ここで説明するように定義できるスタイルから共通部分 ( 、など) をlayout_width継承させます。layout_height

唯一の変更部分はandroid:text、必要に応じて

于 2012-08-01T15:29:45.147 に答える