2014-02-18 70 views
0

我正在嘗試創建一個充當小型媒體播放器的疊加層。
我已經創建了一個新的Activity,它使用了一個讓它的背景透明(深透明)的主題。Android:LinearLayout疊加儘可能小

但是我在佈置時遇到了問題。
將覆蓋目前看起來像這樣:

example image

我試圖讓媒體播放盒(白方)垂直居中和(垂直)儘可能小。 我目前正在試圖通過讓一個LinearLayout中的兩個空白View包圍Box的佈局來實現此目的。

當前代碼:

<?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 - 所以中間箱佔據了屏幕的確切三分之一身高)
但我不知道如何正確地做到這一點。 我的目標是中間的盒子儘可能小,而兩個外部(空白)視圖佔用相等部分的剩餘空間。

我希望有人能幫助我實現這一點。

由於提前,

烏列爾

+1

嘗試刪除'機器人:layout_weight = 「1」'從RelativeLayout的 – Merlevede

+0

現在相對佈局(中間盒)佔據了所有的空間。 (水平和垂直拉伸) – Ansgar

回答

1

的問題是:
相對佈局不應該有1的權重,因爲這是什麼使得它平分總高度3.
當您指定重量爲1或更多時,請將高度(在此例中)設置爲零
此外,您的文本設置爲match_parent,th是那個佔據所有空間的人。

<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" /> 

+0

哇,我現在覺得很愚蠢。我知道3分之差,但我沒有注意到TextView的錯誤。 謝謝。 – Ansgar

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>