避免重复的xml代码

时间:2018-06-07 13:09:46

标签: android android-layout

我想实现与

类似的东西

enter image description here

我不知道如何创建绿色布局而不为水平线以下的信息创建12个单独的文本视图。

我有一个包含

activity_home.xml文件
<LinearLayout
    android:id="@+id/home_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_margin="11dp"
        android:layout_weight="0.4"
        android:background="#118675"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:padding="15dp">

            <TextView
                android:id="@+id/main_strength_number"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="Strength score: "
                android:textColor="@color/main_text_green"
                android:textSize="22sp" />

            <TextView
                android:id="@+id/main_strength_level"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/main_strength_number"
                android:text="Placeholder"
                android:textColor="@color/secondary_text_green" />

            <View
                android:id="@+id/home_horizontal_line"
                android:layout_width="match_parent"
                android:layout_height="1dp"
                android:layout_below="@+id/main_strength_level"
                android:layout_marginBottom="15dp"
                android:layout_marginTop="15dp"
                android:background="@color/secondary_text_green" />


        </RelativeLayout>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_margin="11dp"
        android:layout_weight="0.4"
        android:background="#ffffff"
        android:orientation="vertical">

    </LinearLayout>

</LinearLayout>

看起来像

enter image description here

忽略右下角的按钮

我还有一个home_exercise.xml,其中包含3个文本视图,用于锻炼名称,力量级别和力量值,例如在第一张照片中可能是“深蹲”,“中间”和“72.2”

代码如下

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/home_exercise_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:text="name placeholder"
        android:textColor="@color/main_text_green" />

    <TextView
        android:id="@+id/home_exercise_level"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentEnd="true"
        android:text="72.2"
        android:textAlignment="textEnd"
        android:textColor="@color/main_text_green"
        android:textStyle="bold" />

    <TextView
        android:id="@+id/home_exercise_strength"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentStart="true"
        android:layout_below="@id/home_exercise_name"
        android:text="Intermediate"
        android:textColor="@color/secondary_text_green" />


</RelativeLayout>

看起来像这样

enter image description here

但是,我不确定如何将这两个文件组合起来,以便在第一张图片中实现与应用程序类似的内容,或者它是否是正确的开始方式。

我也不确定,如果我将4个home_exercise.xml布局合并到activity_home.xml,我将如何区分所有TextViews

1 个答案:

答案 0 :(得分:3)

如果行数不是常数,请使用带有自定义适配器的ListView或RecyclerView。

如果行数不变,则可以在xml中使用include标记。 include标签允许您指定ID。

XML示例:

<include
    android:id="@+id/home_exercise_one"
    layout="@layout/home_exercise" />

然后在您的Java或Kotlin中进行简单的findViewById(R.id.home_exercise_one)调用。要引用包含的xml的子项,您必须链接findViewByIds,如下所示:findViewById(R.id.home_exercise_one).findViewById(R.id.home_exercise_name)