2015-04-06 45 views
2

我想顯示在ListView行的一些文本與以下定位:如何對齊佈局中的文本中的Android

Mike  10pt $1,233,500 
Mike2 200pt $1,2,500 
Holly  10pt $4500 

但是,當我嘗試,我得到了這個:

Mike  10pt $1,233,500 
    Mike2 200pt  $12,500 
    Holly   10pt $4500 

我的佈局文件如下。我究竟做錯了什麼?

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" 
     android:gravity="center" 
     android:background="@drawable/dl005_textfield_selected" 
     android:paddingBottom="5dp" > 

     <TextView 
      android:id="@+id/Name" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_marginLeft="10dp" 
      android:text="Mike" 
      android:layout_weight="1" 
      android:textColor="#888888" /> 

     <TextView 
      android:id="@+id/score" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:padding="10dp" 
      android:gravity="right" 
      android:text="10pt" 
      android:textColor="#3498db" /> 

     <TextView 
      android:id="@+id/myid" 
      android:layout_width="50dp" 
      android:layout_height="wrap_content" 
      android:text="$1,233,500" 
      android:textStyle="bold" 
      android:textSize="18sp" 
      android:layout_weight="1" 
      android:gravity="right" 
      android:textColor="#3498db" /> 

    </LinearLayout> 

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

</LinearLayout> 
+0

你考慮過使用['TableLayout']嗎?看起來這將是完美的佈局。從文檔:「將子項排列成行和列的佈局。」您可以根據需要將單元格文本對齊方式設置爲左/右。 – stkent 2015-04-06 03:29:59

+0

使用'TableLayout'是一種推薦的方法,當你使用水平佈局的weight屬性時,你的linearlayout的使用是'width'必須是'0dp'。 – Piyush 2015-04-06 03:50:35

回答

4

您應該使用TableLayout,而不是將子視圖置於行和列中。另請注意,您需要從第三個TexView中刪除android:gravity="right",因爲您需要將其內容左對齊。

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:stretchColumns="1" > 

    <TableRow 
     android:background="@drawable/dl005_textfield_selected" 
     android:paddingBottom="5dp" > 

     <TextView 
      android:id="@+id/Name" 
      android:layout_marginLeft="10dp" 
      android:text="Mike" 
      android:textColor="#888888" /> 

     <TextView 
      android:id="@+id/score" 
      android:padding="10dp" 
      android:gravity="right" 
      android:text="10pt" 
      android:gravity="right" 
      android:textColor="#3498db" /> 

     <TextView 
      android:id="@+id/myid" 
      android:text="$1,233,500" 
      android:textStyle="bold" 
      android:textSize="18sp" 
      android:textColor="#3498db" /> 

    </TableRow> 

    ... 

</TableLayout> 

您還需要去掉兒童TextViewslayout_width屬性,因爲他們總是被設置爲MATCH_PARENT。您可以將單個列設置爲可延伸的可收縮

+0

因爲我已經爲我的應用程序做了一個listview,可以做一些類似table的佈局嗎? – user3264924 2015-04-06 03:38:01

+0

從長遠來看,模仿表格佈局並不明智。有很多Android設備的屏幕尺寸和像素密度都是每種排列/組合,您將繼續修復某些佈局,同時爲其他設備打破布局。 – 2015-04-06 03:42:41

+0

您的解決方案對我有幫助。 – user3264924 2015-04-06 06:14:19