布局视图太多

问题描述 投票:0回答:1

我目前正在尝试使用5x5网格创建基于收银机的应用程序以显示所有菜单我用GridLayout和CardView来显示它们。 1个带有linearLayout + Imageview + TextView的CardView总共产生了4个视图,因此5x5 cardview使我的xml最终获得了100个视图...

我试图在cardview内为linearlayout + imageview + textview使用include标签,这将视图降低到50viewsonly?但是现在的问题是..我想更改include标签内的文本和图像src,否则我无法显示所有菜单图像。这有可能吗?

对我的问题有什么建议吗?

            <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginStart="16dp"
            app:cardPreventCornerOverlap="true"
            app:cardElevation="8dp"
            app:cardCornerRadius="8dp">
            <LinearLayout android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_margin="10dp"
                android:weightSum="100"
                android:orientation="vertical"
                >
                <ImageView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:adjustViewBounds="true"
                    android:scaleType="centerCrop"
                    android:layout_gravity="center"
                    android:layout_weight="70"
                    android:src="@drawable/noimage"
                    android:contentDescription="@string/logo" />
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:textStyle="bold"
                    android:textSize="18sp"
                    android:textColor="#A9A9A9"
                    android:layout_weight="30"
                    android:textAlignment="center"
                    android:autoSizeTextType="uniform"
                    android:text="@string/logo"/>
            </LinearLayout>


        </android.support.v7.widget.CardView>
        <android.support.v7.widget.CardView
            android:layout_width="0dp"
            android:layout_height="0dp"
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"
            android:layout_marginBottom="16dp"
            android:layout_marginStart="16dp"
            app:cardPreventCornerOverlap="true"
            app:cardElevation="8dp"
            app:cardCornerRadius="8dp">
            <include layout="@layout/menu_cardview"/>

        </android.support.v7.widget.CardView>
android performance android-cardview android-gridlayout
1个回答
0
投票

我认为目前无法实现,但是您可以采取的减少/优化xml代码的方法是第一种选择:

仅在GridLayout中使用TextView,对于它们上方的图像,请不要使用单独的ImageView,请在TextViews android:drawabkeTop="drawable/image中使用此>

第二个选项:

第二个选项也可以与第一个选项一起使用。使用样式来设置布局样式示例:

 <style name="gridImageStyle">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:src">@drwable/image</item>
</style>

<style name="gridTextStyle">
    <item name="android:layout_width">wrap_content</item>
    <item name="android:layout_height">wrap_content</item>
    <item name="android:textSize">20sp</item>
    <item name="android:textColor">20sp</item>
</style>

并像这样在您的TextView和ImageView中使用它

              <TextView
                    style="@style/gridTextStyle"
                    android:text="EnterTextHere"/>

              <ImageView
                    style="@style/gridImageStyle"
                    android:src="Enter Image Source here"/>

但是,我建议您在TextView中使用android:drawableTop:"ImageSource"而不是ImageView

© www.soinside.com 2019 - 2024. All rights reserved.