我遇到一些问题,让LinearLayout
的两个孩子拥有相同的宽度。这就是我得到的:
这是灰色框的布局xml:
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="2"
android:background="@color/medium_grey"
>
<ImageView
android:id="@+id/profile_photo"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@drawable/placeholder_profile_photo"
android:scaleType="fitCenter"
android:contentDescription="@string/blank"
android:layout_weight="1"
/>
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
android:layout_weight="1"
android:layout_gravity="center_vertical"
android:background="@color/alert"
>
<TextView
android:id="@+id/profile_rate_header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Rate User"
/>
<LinearLayout
android:id="@+id/profile_action_rate_user"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_weight="1"
android:gravity="center"
>
<ImageView
android:id="@+id/profile_action_rate_up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/user_rate_up"
/>
<ImageView
android:id="@+id/profile_action_rate_down"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/user_rate_down"
/>
</LinearLayout>
</LinearLayout>
</LinearLayout>
我假设设置根layout_weight
的子项的LinearLayout
以及weightSum
和宽度0dp
会产生所需的效果(图像是与粉红色'费率用户'部分相同的大小)然而事实并非如此。
我错过了什么?
修改
这就是我希望它看起来像
照片和粉红色的线性布局应该是相等的宽度。
答案 0 :(得分:23)
android:weightSum="2"
应位于两个子ImageViews的父级上,而不是上级父级。或者尝试设置权重0.5
并查看它是否有效。
此外,使用此类权重时,两个图片视图的宽度应为android:layout_width="0dp"
。
接下来,放大图片以填充空间。详情here。
答案 1 :(得分:10)
同等重视儿童
要创建一个线性布局,其中每个孩子在屏幕上使用相同的空间量,请将每个视图的android:layout_height设置为&#34; 0dp&#34; (对于垂直布局)或每个视图的android:layout_width为&#34; 0dp&#34; (用于水平布局)。然后将每个视图的android:layout_weight设置为&#34; 1&#34;。 请参阅:http://developer.android.com/guide/topics/ui/layout/linear.html
答案 2 :(得分:2)
这是你想要的:
尝试这个xml @boz:它将在所有大小的布局中运行......!
<?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" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight=".50"
android:background="@drawable/ic_launcher" >
</LinearLayout>
<LinearLayout
android:layout_width="0dp"
android:layout_height="fill_parent"
android:layout_weight=".50"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="33.33" >
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="33.33"
android:background="@android:color/darker_gray" >
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="33.33" >
</LinearLayout>
</LinearLayout>
</LinearLayout>
我采用两种线性布局(50%,50%)和三种子线性布局(33.33%,33.33%,33.33%)。其中有三种布局,第二种布局是你的粉红色。
如果还有任何疑问,请问。
答案 3 :(得分:1)
从父视图中删除权重总和(@+id/profile_action_rate_user
)。
答案 4 :(得分:0)
你可以使用这样的东西,希望这符合你的要求。 试试这个xml。
<?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" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:background="@color/Black"
android:gravity="center"
android:orientation="vertical"
android:layout_weight="0.5"
>
<TextView
android:id="@+id/profile_rate_header"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Rate User"
/>
<LinearLayout
android:id="@+id/profile_action_rate_user"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
>
<ImageView
android:id="@+id/profile_action_rate_up"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/close"
/>
<ImageView
android:id="@+id/profile_action_rate_down"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/close"
/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="0.5"
android:orientation="vertical" >
<ImageView
android:id="@+id/profile_photo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:scaleType="fitCenter"
android:src="@drawable/close" />
</LinearLayout>
</LinearLayout>
</LinearLayout>