2017-05-29 79 views
0

我將3 TextView放置在LinearLayout中,並希望它們是均勻分佈的並且具有固定高度。 layout_weight和固定的layout_height的組合應該確保所有3個視圖始終顯示在一行中並且始終具有相同的高度。但他們不是。線性佈局 - 固定身高的兒童被錯誤放置

有人可以解釋問題出在哪裏嗎?我無法找到它......

這裏是我的LinearLayout與它的孩子們:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/tvMuted" 
     android:text="@string/color_palette_muted" 
     android:foreground="?selectableItemBackground" 
     android:gravity="center" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_margin="4dp" 
     android:layout_height="64dp"> 
    </TextView> 

    <TextView 
     android:id="@+id/tvMutedLight" 
     android:text="@string/color_palette_muted_light" 
     android:foreground="?selectableItemBackground" 
     android:gravity="center" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_margin="4dp" 
     android:layout_height="64dp"> 
    </TextView> 

    <TextView 
     android:id="@+id/tvMutedDark" 
     android:text="@string/color_palette_muted_dark" 
     android:foreground="?selectableItemBackground" 
     android:gravity="center" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_margin="4dp" 
     android:layout_height="64dp"> 
    </TextView> 

</LinearLayout> 

而這就是我得到:

enter image description here

回答

1

只需在所有TextView中設置android:layout_gravity="center",如下所示:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/tvMuted" 
     android:text="@string/color_palette_muted" 
     android:foreground="?selectableItemBackground" 
     android:gravity="center" 
     android:layout_gravity="center" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_margin="4dp" 
     android:layout_height="64dp"> 
    </TextView> 

    <TextView 
     android:id="@+id/tvMutedLight" 
     android:text="@string/color_palette_muted_light" 
     android:foreground="?selectableItemBackground" 
     android:gravity="center" 
     android:layout_gravity="center" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_margin="4dp" 
     android:layout_height="64dp"> 
    </TextView> 

    <TextView 
     android:id="@+id/tvMutedDark" 
     android:text="@string/color_palette_muted_dark" 
     android:foreground="?selectableItemBackground" 
     android:gravity="center" 
     android:layout_gravity="center" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_margin="4dp" 
     android:layout_height="64dp"> 
    </TextView> 

</LinearLayout> 
+0

這有幫助,但沒有解釋爲什麼固定高度的兒童權重均勻分佈不是在一行中繪製。有任何想法嗎?我敢肯定,我已經使用它像上面大約50次,它一直工作... – prom85

+0

仍然我沒有想過嘗試這個,我幫助,謝謝 – prom85

+0

歡迎,使用這個的原因可能是內容。隨着內容的增加,佈局開始顯得無組織。 –

0

試試這個

<LinearLayout 
    android:layout_width="match_parent" 
    android:orientation="horizontal" 
    android:weightSum="3" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/tvMuted" 
     android:layout_width="0dp" 
     android:layout_height="64dp" 
     android:layout_margin="4dp" 
     android:layout_weight="1" 
     android:foreground="?selectableItemBackground" 
     android:gravity="center" 
     android:text="MUTED"/> 

    <TextView 
     android:id="@+id/tvMutedLight" 
     android:layout_width="0dp" 
     android:layout_height="64dp" 
     android:layout_margin="4dp" 
     android:layout_weight="1" 
     android:foreground="?selectableItemBackground" 
     android:gravity="center" 
     android:text="MUTED-HELL"/> 

    <TextView 
     android:id="@+id/tvMutedDark" 
     android:layout_width="0dp" 
     android:layout_height="64dp" 
     android:layout_margin="4dp" 
     android:layout_weight="1" 
     android:foreground="?selectableItemBackground" 
     android:gravity="center" 
     android:text="MUTED-DUNKEL"/> 

</LinearLayout> 
+0

我不能用'機器人:weightSum = 「3」'因爲我可能會隱藏一些意見和只有一個或兩個項目將可見.. – prom85

0

試試這個

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:id="@+id/activity_main2" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical" 
tools:context="com.ncrypted.demoapplications.Main2Activity"> 

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <TextView 
     android:id="@+id/tvMuted" 
     android:layout_width="0dp" 
     android:layout_height="64dp" 
     android:layout_margin="4dp" 
     android:layout_weight="1" 
     android:background="#F00" 
     android:gravity="center" 
     android:text="color1" /> 

    <TextView 
     android:layout_width="0dp" 
     android:layout_height="64dp" 
     android:layout_margin="4dp" 
     android:layout_weight="1" 
     android:background="#F00" 
     android:gravity="center" 
     android:text="color1" /> 
    <TextView 
     android:layout_width="0dp" 
     android:layout_height="64dp" 
     android:layout_margin="4dp" 
     android:layout_weight="1" 
     android:background="#F00" 
     android:gravity="center" 
     android:text="color1" /> 


</LinearLayout> 

0

把這個線在每一個文本視圖android:singleLine="true"這將包裝您的文字一行

有人能解釋問題出在哪裏謊言?我無法找到它......

的問題是你的固定海特64dp actully你告訴查看視圖和應擴大到中心64 DP集中文本
但是當文本比你的TextView文字大將從所有側切 有三種選項,這

。使TextView的HIGHT「WrapContent」但在這種情況下,用不同的HIGHT文本長度所有的TextView

。使文本單行機器人:單線=「真」喜歡靜音敦...這樣基本上它顯示在單行

文本。設置機器人:layout_gravity =「中心」但在這種情況下,如果不是你的文字顯示

0

添加屬性android:weightSum="3"android:gravity="center"LinearLayout文本長度較大。

這裏是工作代碼:

<LinearLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" 
    android:weightSum="3" 
    android:gravity="center"> 

    <TextView 
     android:id="@+id/tvMuted" 
     android:text="Muted" 
     android:foreground="?selectableItemBackground" 
     android:gravity="center" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_margin="4dp" 
     android:layout_height="64dp" 
     android:textColor="@android:color/white" 
     android:background="#958F81"> 
    </TextView> 

    <TextView 
     android:id="@+id/tvMutedLight" 
     android:text="Muted - Hell" 
     android:foreground="?selectableItemBackground" 
     android:gravity="center" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_margin="4dp" 
     android:layout_height="64dp" 
     android:textColor="@android:color/white" 
     android:background="#A4A38E"> 
    </TextView> 

    <TextView 
     android:id="@+id/tvMutedDark" 
     android:text="Mmuted - Dunkel" 
     android:foreground="?selectableItemBackground" 
     android:gravity="center" 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:layout_margin="4dp" 
     android:layout_height="64dp" 
     android:textColor="@android:color/white" 
     android:background="#686868"> 
    </TextView> 

</LinearLayout> 

OUTPUT:

enter image description here