0

我有一个LinearLayout10weightSum有 2 个LinearLayoutlayout_weight4 和 6 的孩子。当背景是彩色或什么都没有时,它工作正常。但是当我设置背景图像时会出现问题。可能是什么问题和解决方案?

工作代码:

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

    android:weightSum="10" >

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="4"
        android:background="@color/Blue"
 >

    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="6"
        android:background="@color/new_back"
        android:orientation="vertical"
        android:weightSum="10" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="5"
            android:gravity="center"
            android:orientation="horizontal"
            android:weightSum="99" >

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnCustomers"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/customer" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Chemist"
                    android:textColor="#000000" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnOrder"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/order" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Order"
                    android:textColor="#000000" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnItemStatus"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/item_status" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Item Status"
                    android:textColor="#000000" />
            </LinearLayout>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="5"
            android:gravity="center"
            android:orientation="horizontal"
            android:weightSum="99" >

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnNotification"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/notification" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Notification"
                    android:textColor="#000000" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnAttendance"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/attendance" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Attendance"
                    android:textColor="#000000" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnExpenceClaim"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/expence_clain" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Exp. Claim"
                    android:textColor="#000000" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

有问题的代码:

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

    android:weightSum="10" >

 <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="4"
        android:background="@drawable/top_menu"
 >

    </LinearLayout>


    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="6"
        android:background="@color/new_back"
        android:orientation="vertical"
        android:weightSum="10" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="5"
            android:gravity="center"
            android:orientation="horizontal"
            android:weightSum="99" >

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnCustomers"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/customer" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Chemist"
                    android:textColor="#000000" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnOrder"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/order" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Order"
                    android:textColor="#000000" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnItemStatus"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/item_status" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Item Status"
                    android:textColor="#000000" />
            </LinearLayout>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="5"
            android:gravity="center"
            android:orientation="horizontal"
            android:weightSum="99" >

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnNotification"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/notification" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Notification"
                    android:textColor="#000000" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnAttendance"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/attendance" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Attendance"
                    android:textColor="#000000" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnExpenceClaim"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/expence_clain" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Exp. Claim"
                    android:textColor="#000000" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

4

4 回答 4

1

您需要了解重量的工作原理。度量通过,权重将分配剩余空间。如果您的图像正在包装其内容并且它使用了所有空间,则剩余未使用的空间(无)将根据权重进行分配。您必须调整容器并阅读有关线性布局重量的信息。

于 2014-03-12T08:13:29.760 回答
0
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:weightSum="10" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="4"
        android:background="@drawable/ic_launcher" >
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dip"
        android:layout_weight="6"
        android:background="#000000"
        android:orientation="vertical"
        android:weightSum="10" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="5"
            android:gravity="center"
            android:orientation="horizontal"
            android:weightSum="99" >

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnCustomers"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Chemist"
                    android:textColor="#000000" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnOrder"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Order"
                    android:textColor="#000000" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnItemStatus"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Item Status"
                    android:textColor="#000000" />
            </LinearLayout>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="5"
            android:gravity="center"
            android:orientation="horizontal"
            android:weightSum="99" >

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnNotification"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Notification"
                    android:textColor="#000000" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnAttendance"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Attendance"
                    android:textColor="#000000" />
            </LinearLayout>

            <LinearLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_weight="33"
                android:gravity="center"
                android:orientation="vertical" >

                <ImageView
                    android:id="@+id/idbtnExpenceClaim"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:src="@drawable/ic_launcher" />

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="Exp. Claim"
                    android:textColor="#000000" />
            </LinearLayout>
        </LinearLayout>
    </LinearLayout>

</LinearLayout>
于 2014-03-12T08:10:55.900 回答
0

找到了解决方案!问题在于 Eclipse 中为该特定 xml 文件设置的布局主题。Theme.NoTitleBar在那个 xml 文件中设置了主题。我将它切换为默认值AppThemeTheme.Light现在它可以工作了。:)

于 2014-03-12T08:27:24.620 回答
0

这是关于layout_weight. 而不是根据每个项目的来划分父视图的总空间,而是划分的weight额外空间

正如官方文件所说的布局重量,我引用:

LinearLayout 还支持使用 android:layout_weight 属性为单个子级分配权重。该属性根据屏幕上应占用多少空间为视图分配“重要性”值。较大的权重值允许它扩展以填充父视图中的任何剩余空间。子视图可以指定一个权重值,然后将视图组中的任何剩余空间按照其声明权重的比例分配给子视图。默认权重为零。

在您的情况下,将 设置layout_height0dp意味着wrap_content,由于图像足够大,它几乎占据了父视图的所有空间,这导致没有额外的空间可以根据layout_weight. 由于wrap_content纯色只有 1dp,它工作得很好,因为有足够的额外空间。

总而言之,如果您希望按layout_weight预期工作,每个视图都应该小于其父视图的权重。

要修复它,只需将weight=4视图包装成一个LinearLayout权重设置为 4 的新视图。

于 2014-03-12T08:39:28.353 回答