我有LinearLayout
weightSum
10,其中有2个孩子LinearLayout
,layout_weight
4和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>
答案 0 :(得分:1)
你需要了解体重的运作方式。权重将在传递度量后指定剩余空间。如果您的图片包装其内容并且它使用了所有空间,则剩余的未使用空间(无)将根据权重进行分配。您必须调整容器并阅读Linear Layout weight.
答案 1 :(得分: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>
答案 2 :(得分:0)
找到解决方案!问题在于eclipse中针对该特定xml文件设置的布局主题。主题在该xml文件中设置为Theme.NoTitleBar
。我将其切换为默认AppTheme
Theme.Light
,现在可以使用了。 :)
答案 3 :(得分:0)
这是对layout_weight
的常见误解。不是根据每个项目weight
划分父视图的总空间,而是划分的额外空间。
正如官方文件中提到的layout weight,我引用:
LinearLayout还支持使用android:layout_weight属性为各个孩子分配权重。此属性根据屏幕上应占用多少空间为视图指定“重要性”值。较大的权重值允许它扩展以填充父视图中的任何剩余空间。子视图可以指定权重值,然后视图组中的任何剩余空间将按其声明权重的比例分配给子项。默认权重为零。
在您的情况下,将layout_height
设置为0dp
表示wrap_content
,因为图片足够大,它几乎占据了父视图的所有空间,这导致没有< strong>额外空间,根据layout_weight
进行划分。由于纯色的wrap_content
仅为1dp,因此有足够的额外空间,因此工作正常。
总而言之,如果您希望layout_weight
按预期工作,则每个视图应小于其父视图的权重。
要修复它,只需将weight=4
视图包装到权重设置为4的新LinearLayout
中。