2012-07-02 69 views
0

好吧,這裏是,這種佈局會給你3的圖像,都是平等的寬度,該寬度是一樣寬的3個textviews最長文本什麼是這個XML佈局的替代方案(皮棉警告)

它們具有相同的寬度,因爲他們match_parent和父WRAP_CONTENT到最大的TextView。

3組文本的意見都集中在同等於在左側和右側空間的背景。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="#0000FF" 
    android:gravity="center" > 

    <LinearLayout 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:orientation="vertical" > 

     <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#FF0000" 
     android:drawableLeft="@drawable/ic_launcher" 
     android:text="view 1"/> 

     <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#FF0000" 
     android:drawableLeft="@drawable/ic_launcher" 
     android:text="view 2"/> 

     <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="#FF0000" 
     android:drawableLeft="@drawable/ic_launcher" 
     android:text="view 3 longer text"/> 

    </LinearLayout> 
</LinearLayout> 

像這樣:

Preview

問題是皮棉給予警告,內部的LinearLayout是沒用的。(這是不是因爲它是什麼使內textviews成爲所有相同的寬度。

Lint error

任何人都可以產生相同的佈局,但沒有lint警告?

+0

內的LinearLayout渦卷是允許較小TextViews伸展到最寬的TextView的大小textviews。雖然沒有伸展到屏幕寬度 – Blundell

+0

避免皮棉警告的一個棘手方法是添加一個textview或其他widget元素,其可見性設置爲消失。 – Raykud

回答

2
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:layout_gravity="center" 
android:orientation="vertical"> 

    <TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="view 1"/> 

    <TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="view 2"/> 

    <TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="view 3 longer text"/> 
</LinearLayout> 

這給了我類似的結果,Lint沒有任何錯誤。我從代碼中刪除了可繪製標籤,因爲我沒有使用可繪製標籤。只需添加它們。這裏唯一的問題是你不能在LinearLayout標籤中放置背景。您必須爲您的活動創建自定義主題,這很容易,因爲您可以將現有主題設置爲父級,並更改背景值...更多主題here

+0

這是一個很好的解決方案,它允許您降低視圖層次結構的複雜性。 –

+0

是的,這只是一個活動值得創建主題的問題。也許我應該問爲什麼我使用這種背景,我可以在別處使用它來擴展我的主題使用。所以在一天結束時,我認爲這是答案。 – Blundell

+0

@Blundell你強調了很多**創造一個新的主題**。如果你真的寫了它,它只需要三行代碼,最多五行。所以這不是太多的工作。 – udiboy1209

1

想來想去.. 。這裏是我的解決辦法是到外線性佈局改變的幀結構

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

    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_vertical|center_horizontal" 
     android:orientation="vertical" > 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#FF0000" 
      android:drawableLeft="@drawable/ic_launcher" 
      android:text="view 1" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#FF0000" 
      android:drawableLeft="@drawable/ic_launcher" 
      android:text="view 2" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="#FF0000" 
      android:drawableLeft="@drawable/ic_launcher" 
      android:text="view 3 longer text" /> 
    </LinearLayout> 

</FrameLayout> 

您可以設置佈局重心上lineaer佈局爲:

android:layout_gravity="center_vertical|center_horizontal"

或在框架佈局上設置常規重力。

+0

刪除FrameLayout,將背景添加到主題,並且您的答案是勝利者;-) – Blundell

1

由於它只是一個警告,而且你知道佈局不是無用的,你可以忽略它。

或者,您也可以通過添加android:background="@null"到內部的LinearLayout欺騙皮棉。

0

您是否嘗試過使用線性佈局內的RelativeLayout的,?