Android linearlayout与framelayout的宽度相同

时间:2014-06-20 12:46:51

标签: android android-layout android-linearlayout android-framelayout

我让设备处于横向模式,我在LinearLayout内放置了FrameLayout。此FrameLayout位于VideoView内,属性android:layout_width="wrap_content"。 在FrameLayout下(以及第一个LinearLayout内),我想将其他LinearLayout内置ImaveViewTextView。 关键是第二个LinearLayout的宽度应该与FrameLayout的宽度相同,android:layout_width="wrap_content"具有自己内容的大小。

我怎么能这样做? android:layout_width="fill_parent"android:layout_width="match_parent".xml属性中的任何一个都可正常运行。

以下是我的<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/parent" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_gravity="center" android:gravity="center" android:orientation="vertical" > <FrameLayout android:id="@+id/frame" android:layout_width="wrap_content" android:layout_height="0dip" android:layout_gravity="center_vertical|center_horizontal" android:layout_weight="2.5" android:background="@color/yell" android:gravity="center_vertical" android:paddingBottom="5dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:paddingTop="5dp" > <VideoView android:id="@+id/videoView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" > </VideoView> <Button android:id="@+id/videoplay" android:layout_width="50dp" android:layout_height="50dp" android:layout_gravity="center_vertical|center_horizontal" android:onClick="FullScreenVideo" > </Button> </FrameLayout> <LinearLayout android:id="@+id/linLayout" android:layout_width="fill_parent" android:layout_height="0dip" android:layout_gravity="bottom" android:background="@color/yell" android:orientation="horizontal" android:paddingLeft="5dp" android:paddingRight="5dp" android:visibility="visible" android:layout_weight="0.5" > <ImageView android:id="@+id/usrimg" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical" android:gravity="center_vertical" android:src="@drawable/usrpicture" > </ImageView> </LinearLayout> </LinearLayout> 代码示例:

{{1}}

1 个答案:

答案 0 :(得分:1)

您必须将主要布局android:layout_width属性设置为LinearLayout

这样,您的主要布局宽度将适合其子项的宽度。由于第二个wrap_content的宽度设置为fill_parent,因此仅使用LinearLayout的宽度。

但是,由于您的主要布局不适合所有屏幕宽度,因此将为空白区域(不包含主要布局的空间)设置默认背景(白色)。

为避免这种情况,您可以将所有布局包装在FrameLayout(或RelativeLayout并不重要)中,将此布局的宽度设置为match_parent并设置所需的背景。因此,您的布局将使用所有屏幕空间。

它会给你这个:

LinearLayout

顺便说一下,您应该使用<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_background="{Your background}"> <LinearLayout android:id="@+id/parent" android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_gravity="center" android:gravity="center" android:orientation="vertical" > <FrameLayout android:id="@+id/frame" android:layout_width="wrap_content" android:layout_height="0dip" android:layout_gravity="center_vertical|center_horizontal" android:layout_weight="2.5" android:background="@color/yell" android:gravity="center_vertical" android:paddingBottom="5dp" android:paddingLeft="5dp" android:paddingRight="5dp" android:paddingTop="5dp" > <VideoView android:id="@+id/videoView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:gravity="center" /> <Button android:id="@+id/videoplay" android:layout_width="50dp" android:layout_height="50dp" android:layout_gravity="center_vertical|center_horizontal" android:onClick="FullScreenVideo" /> </FrameLayout> <LinearLayout android:id="@+id/linLayout" android:layout_width="match_parent" android:layout_height="0dip" android:layout_gravity="bottom" android:background="@color/yell" android:orientation="horizontal" android:paddingLeft="5dp" android:paddingRight="5dp" android:visibility="visible" android:layout_weight="0.5" > <ImageView android:id="@+id/usrimg" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_vertical" android:gravity="center_vertical" android:src="@drawable/usrpicture" /> </LinearLayout> </LinearLayout> </RelativeLayout> 而不是match_parent,因为它已被弃用。