如何设计一个信息屏幕,其中包含有关对象的详细信息

时间:2018-09-12 23:43:39

标签: android xml kotlin

我如何以高效,清洁的方式通过Android Food Deliver App重新设计此信息屏幕? (尤其是“ ALLGEMEINE INFO”部分)

Infoscreen (Goal)

目前,我正在使用ScrollView进行此操作,并填充了Main LinearLayout(orientation = vertical)。里面有更多交错的线性布局,这使整个事情变得复杂而不干净。

这是我当前的代码:

<ScrollView
    android:layout_width="0dp"
    android:layout_height="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/imageView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            app:srcCompat="@drawable/food_1" />

        <TextView
            android:id="@+id/textView3"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Restaurant"
            android:textAlignment="center"
            android:textAppearance="@style/TextAppearance.AppCompat.Large" />

        <me.zhanghai.android.materialratingbar.MaterialRatingBar
            style="@style/Widget.MaterialRatingBar.RatingBar.Indicator.Small"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_below="@+id/restaurant_item_num_ratings"
            android:layout_alignLeft="@+id/restaurant_item_num_ratings"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center_horizontal" />

        <TextView
            android:id="@+id/textView4"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:text="32 Bewertungen"
            android:textAlignment="center" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="ALLGEMEINE INFO"
            android:layout_marginTop="@dimen/activity_vertical_margin"
            android:layout_marginBottom="@dimen/activity_vertical_margin"
            android:layout_marginStart="8dp"/>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:src="@drawable/ic_settings_black_24dp"
                android:layout_marginStart="@dimen/activity_horizontal_margin"
                android:layout_marginEnd="@dimen/activity_horizontal_margin"/>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="11:00 - 23:00"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Öffnungszeiten" />

            </LinearLayout>
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:layout_marginTop="4dp">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="center"
                android:src="@drawable/ic_map_black_24dp"
                android:layout_marginStart="@dimen/activity_horizontal_margin"
                android:layout_marginEnd="@dimen/activity_horizontal_margin"/>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:orientation="vertical">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Some Restaurant"
                    android:textStyle="bold" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Firmenname" />

            </LinearLayout>


        </LinearLayout>


    </LinearLayout>
</ScrollView>

及其设计预览:

My current design (preview)

是否有一种“清洁”的设计方式?使用RecyclerView等,还是其他? 顺便说一句,各个元素将从数据库中加载。

2 个答案:

答案 0 :(得分:0)

使用RecyclerView和对象填充它,而不是固定的LinearLayout

某些数据可能不存在,因此您将获得空行。...

答案 1 :(得分:0)

正如Artem所说,在这里,Recyclerview是有益的。我也建议根据您希望的信息显示方式在Cardviews中放置信息,这样您就可以制作出看起来非常干净的信息/详细信息布局。如果操作正确,recyclerview将比滚动视图更具吸引力。