Android linearlayout的宽度与framelayout相同

Android linearlayout的宽度与framelayout相同,android,android-layout,android-linearlayout,android-framelayout,Android,Android Layout,Android Linearlayout,Android Framelayout,我将设备置于横向模式,并在其上放置了一个线性布局,其内部有一个框架布局。这个FrameLayout内部有一个VideoView和属性android:layout\u width=“wrap\u content”。 在FrameLayout(以及第一个LinearLayout的内部)下,我想在内部放置另一个LinearLayout,其中包含一些ImaveView和TextView。 关键是,第二个线性布局的宽度应与框架布局的宽度相同,框架布局的大小应与自身内容的大小相同 我怎么能这么做?任何and

我将设备置于横向模式,并在其上放置了一个
线性布局
,其内部有一个
框架布局
。这个
FrameLayout
内部有一个
VideoView
和属性
android:layout\u width=“wrap\u content”
。 在
FrameLayout
(以及第一个
LinearLayout
的内部)下,我想在内部放置另一个
LinearLayout
,其中包含一些
ImaveView
TextView
。 关键是,第二个
线性布局的宽度应与
框架布局的宽度相同,框架布局的大小应与自身内容的大小相同

我怎么能这么做?任何
android:layout\u width=“wrap\u content”
android:layout\u width=“fill\u parent”
android:layout\u width=“match\u 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>

您必须将主布局(
LinearLayout
)的
android:layout\u width
属性设置为
wrap\u content

这样,主布局的宽度将适合其子布局的宽度。由于第二个
LinearLayout
的宽度设置为“填充父对象”,因此将仅使用
FrameLayout
的宽度

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

为了避免这种情况,您可以将所有布局包装在一个
RelativeLayout
(或
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\u parent
而不是
fill\u parent
,因为它已被弃用