2012-01-01 3 views
0

LinearLayoutでlayout_weightを使用して行のパーセンテージサイジングを推奨しましたが、リストビューでラップすると成功しませんでした。行のレイアウトXMLはEclipseプレビューでうまく見えますが、列は実際のテストアプリで一緒に実行されます。Android最良の方法パーセンテージのサイズ設定を使用したマルチ列リストビュー

しかし、私がTableLayoutとTableRowでListViewをラップすると、それは動作します。

添付されているのは、メインビューのレイアウトXMLです。コメントタグを削除してTableLayoutとTableRowを削除すると、それは失敗します。

誰でも何が起こっているのか説明できますか?

これを行うより良い方法はありますか?

=====行レイアウト=====

<?xml version="1.0" encoding="utf-8"?> 
<!-- row.xml --> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:paddingTop="4dip" 
    android:paddingBottom="6dip" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:weightSum="100" 
    android:orientation="horizontal"> 

    <TextView android:id="@+id/one" 
     android:layout_width="0dip" 
     android:layout_weight="25" 
     android:textColor="#FFFFFF" 
     android:text="One" 
     android:layout_height="wrap_content"/> 

    <TextView android:id="@+id/two" 
     android:layout_width="0dip" 
     android:layout_weight="25" 
     android:textColor="#FFFFFF" 
     android:text="Two" 
     android:layout_height="wrap_content"/> 

    <TextView android:id="@+id/three" 
     android:layout_width="0dip" 
     android:layout_weight="50" 
     android:textColor="#FFFFFF" 
     android:text="Three" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

=====メインレイアウト=====

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 
    <TableLayout 
     android:id="@+id/mainlist" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:stretchColumns="0" 
     android:paddingTop="4px" > 
     <TableRow> 
      <ListView 
       android:id="@+id/lview" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" > 
      </ListView> 
     </TableRow> 
    </TableLayout> 
</LinearLayout> 

答えて

1

テーブルレイアウトとのTableRowを削除し、ちょうどListView layout_widthをmatch_parentに設定してください。

edit:またはmatch_parentまたはfill_parentは同義語です。

+0

これが私のために動作しませんでした。 – Mesocyclone

+0

特に動作しなかったものはありますか?私は銀河系のネクサスでそれを試したところ、かなりうまくいった。 – stork

+0

ええ、それはそれをしました。少年は私が気まずいと感じますか?私は間違った要素でそれを変更しました。ありがとう。 – Mesocyclone

0

layout_gravityの代わりにlayout_weightという言葉を使っているとします。

は、リストビュー内の最初のlayout_weightSumを除去してみて、このようになり、各列の重みを置き換える:3列目の2列目 1の最初の列 0.25で

0.25。

ナンバーワンは、ギャップに

EDITを埋めるために、列のストレッチを行います:私は理解何

は、次の3つの列を持つ線形レイアウトを作成することです:

は、私はこれを意味しました。それらの列のうちの2つは、残りの半分を満たすために3番目の列が伸びる必要があるスクリーンスペースの半分を取る必要があります。

この線形レイアウトは、リストビューの各項目の単一項目のレイアウトにする必要があります。

<?xml version="1.0" encoding="utf-8"?> 
<!-- row.xml --> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:paddingTop="4dip" 
    android:paddingBottom="6dip" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <TextView android:id="@+id/one" 
     android:layout_width="0dip" 
     android:layout_weight=".25" 
     android:textColor="#FFFFFF" 
     android:text="One" 
     android:layout_height="wrap_content"/> 

    <TextView android:id="@+id/two" 
     android:layout_width="0dip" 
     android:layout_weight=".25" 
     android:textColor="#FFFFFF" 
     android:text="Two" 
     android:layout_height="wrap_content"/> 

    <TextView android:id="@+id/three" 
     android:layout_width="0dip" 
     android:layout_weight="1" 
     android:textColor="#FFFFFF" 
     android:text="Three" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

これは私自身のいずれかです。

?xml version="1.0" encoding="utf-8"?> 
<!-- row.xml --> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    style="@style/ListViewItem" 
    android:orientation="horizontal"> 

    <TextView android:id="@+id/currencyName" 
     style="@style/ListViewItemSubtitle" 
     android:layout_width="110dip" 
     android:layout_height="wrap_content" 
     android:layout_weight="1"/> 

    <TextView android:id="@+id/currencyCode" 
     style="@style/ListViewItemSubtitle" 
     android:layout_width="60dip" 
     android:layout_height="wrap_content" 
     android:layout_weight=".2"/> 

    <TextView android:id="@+id/currencyExchangeRate" 
     style="@style/ListViewItemSubtitle" 
     android:layout_width="90dip" 
     android:layout_height="wrap_content" 
     android:layout_weight=".25"/> 


</LinearLayout> 
+0

はい、私は体重を意味しました。 TableLayoutとTableRowを削除して、記述した他の変更を行うことを意味するのであれば、機能しませんでした。私はそれがListView/LinearLayout /階層の外で動作すると仮定しますが、その内部で動作するようには思われません。 – Mesocyclone

+0

@Mesocyclone私の編集を確認してください – sfratini

+0

しかし、各TextView項目に明示的な幅が指定されています。それは体重と矛盾しませんか? – Mesocyclone

関連する問題