Android:LinearLayout Overlay尽可能小

时间:2014-02-18 16:29:19

标签: android android-layout android-linearlayout

我正在尝试创建一个充当小型媒体播放器的叠加层 我创建了一个新的Activity,它使用一个主题,使其背景透明(深色透明)。

但是在布局方面我遇到了问题 Overlay目前看起来像这样:

example image

我试图将媒体播放器盒(白色方块)垂直居中并(垂直)尽可能小。 我目前正试图通过在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" >

    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:layout_weight="1" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="#CCFFFFFF"
        android:id="@+id/overlay_layout" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            android:id="@+id/overlay_firstrow">

            <ImageButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/overlay_playbutton"
                android:src="@android:drawable/ic_media_play"
                android:background="@null" />

            <SeekBar
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/overlay_seekbar" />
        </LinearLayout>


        <TextView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/overlay_firstrow"
            android:layout_alignParentLeft="true"
            android:id="@+id/overlay_text"
            android:text="filename" />

    </RelativeLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:layout_weight="1" />

</LinearLayout>

我知道当前代码不起作用(因为我为空白视图和LinearLayout分配了1的权重 - 因此中间框占据了屏幕高度的三分之一)
但我不知道如何正确地做到这一点。 我的目标是中间框尽可能小,而两个外部(空白)视图占用相同部分的剩余空间。

我希望有人可以帮助我实现这一目标。

提前致谢,

乌列尔

2 个答案:

答案 0 :(得分:1)

问题是:
相对布局的权重不应为1,因为这使得它在3中的总高度相等 指定权重为1或更大时,请将高度(在本例中)设置为零 此外,您的文字设置为match_parent,这是占据所有空间的人。

<View
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" />

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="#CCFFFFFF"
    android:id="@+id/overlay_layout" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:id="@+id/overlay_firstrow">

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/overlay_playbutton"
            android:src="@android:drawable/ic_media_play"
            android:background="@null" />

        <SeekBar
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/overlay_seekbar" />
    </LinearLayout>


    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/overlay_firstrow"
        android:layout_alignParentLeft="true"
        android:id="@+id/overlay_text"
        android:text="filename" />

</RelativeLayout>

<View
    android:layout_width="match_parent"
    android:layout_height="0dp"
    android:layout_weight="1" />

答案 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" >

    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <RelativeLayout
        android:id="@+id/overlay_layout"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="#CCFFFFFF" >

        <LinearLayout
            android:id="@+id/overlay_firstrow"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal" >

            <ImageButton
                android:id="@+id/overlay_playbutton"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:background="@null"
                android:src="@android:drawable/ic_media_play" />

            <SeekBar
                android:id="@+id/overlay_seekbar"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
        </LinearLayout>

        <TextView
            android:id="@+id/overlay_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/overlay_firstrow"
            android:text="filename" />
    </RelativeLayout>

    <View
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1" />

</LinearLayout>