2013-01-08 53 views
0

在此佈局中,我有兩個視圖 - 右下方的Im​​ageButton和中央底部的TextView。當兩個視圖的android:visibility設置爲visible時 - 所有按需要對齊。但是,如果我將ImageButton的android:visibility設置爲gone - EditText將轉到佈局的左邊緣。將文本視圖中心橫向和底部對齊到父親

問題:

1)爲什麼會這樣呢?

2)如何實現EditText不改變的地方ImageButtongone的可見性?我需要獲得與左側圖片相同的佈局(請參閱下面的內容),但是沒有ImageButton。 (我知道,一個可能性是設置visibilitygone,但invisible,但我更感興趣的是與visibility = "gone"溶液)

PS:前兩個佈局 - RelativeLayoutFrameLayout是強制性的 - 它們被用來對於其他的東西,我只是刪除了所有與問題無關的東西。

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <FrameLayout 
     android:id="@+id/mForSearchFragment" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_above="@id/mForAdMediation" 
     android:layout_alignWithParentIfMissing="true" > 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" > 

      <EditText 
       android:id="@+id/mSearchEditText" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_alignParentBottom="true" 
       android:layout_centerHorizontal="true" 
       android:ems="5" 
       android:imeOptions="actionSearch" 
       android:inputType="text" 
       android:visibility="visible" > 

       <requestFocus /> 
      </EditText> 

      <ImageButton 
       android:id="@+id/mSearchButton" 
       android:layout_width="48dp" 
       android:layout_height="48dp" 
       android:layout_alignParentBottom="true" 
       android:layout_alignParentRight="true" 
       android:background="@drawable/dark_button" 
       android:src="@drawable/tab_search" 
       android:visibility="visible" /> 
     </RelativeLayout> 
    </FrameLayout> 

</RelativeLayout> 

這裏是佈局: layouts

回答

7

的問題是,你的內心RelativeLayout位於FrameLayout內部,該寬度設置爲wrap_content。所以,當ImageView消失時,RelativeLayout的寬度縮小到EditText的寬度。因此,EditText仍然位於RelativeLayout中間,但RelativeLayout只與EditText一樣寬。

也許你可以簡化你的佈局是這樣的?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <EditText 
     android:id="@+id/mSearchEditText" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:ems="5" 
     android:imeOptions="actionSearch" 
     android:inputType="text" 
     android:visibility="visible" > 

     <requestFocus /> 
    </EditText> 

    <ImageButton 
     android:id="@+id/mSearchButton" 
     android:layout_width="48dp" 
     android:layout_height="48dp" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentRight="true" 
     android:background="@drawable/dark_button" 
     android:src="@drawable/tab_search" 
     android:visibility="visible" /> 

</RelativeLayout> 
+0

是的,問題出在那個FrameLayout中。謝謝! – Prizoff

0

嗯,看來我找到了一個解決方案:

我需要設置的第一FrameLayoutlayout_width"match_parent"