【问题标题】:Android linearlayout same width as framelayoutAndroid 线性布局与框架布局相同的宽度
【发布时间】:2014-06-20 12:46:51
【问题描述】:

我的设备处于横向模式,并在其上放置了 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>

【问题讨论】:

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


    【解决方案1】:

    您必须将主布局 (LinearLayout) 的 android:layout_width 属性设置为 wrap_content

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

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

    为避免这种情况,您可以将所有布局包装在RelativeLayout(或LinearLayout 无关紧要)中,将此布局的宽度设置为 match_parent 并设置您想要的背景。所以你的布局将使用所有的屏幕空间。

    它会给你这个:

    <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 而不是 fill_parent,因为它已被弃用。

    【讨论】:

      猜你喜欢
      • 2012-07-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      • 2023-03-22
      • 1970-01-01
      • 2021-05-03
      • 1970-01-01
      相关资源
      最近更新 更多