1

ListView で名前と値のペアのリストを表示する必要があります。そして、値を最長の名前幅に揃えたいと思います。ただし、名前の長さとその数は、データを受信するまで不明です。

例えば:

name1:          value1
name111:        value2
someOtherName:  value3
----------------------next ListView Item
name3:          value4
longestNameeee: value5
----------------------next ListView Item

今のところ、アイテム レイアウトとして LinearLayout を使用して Adapter を作成し、重み 0.5 - 0.5 の名前と値のペアを持つ内部 LinearLayouts を追加しています (レイアウトの中央の後に値が表示されることを意味します)。しかし、最長の名前の長さに応じて名前と値の重みを設定する方法は?

4

2 に答える 2

1

リストビューの行レイアウトで相対レイアウトを使用して、名前を左に、値を右に配置することを検討できますか?

別のオプションとして、Paint.measureText を使用してテキストの長さを測定することもできますが、テキストビューの表示プロパティ (textSize、texyStyle、font、...) と同じペイント プロパティを設定する必要があります。 http://developer.android.com /reference/android/graphics/Paint.html#measureText(java.lang.String , int, int)

これを使用して、テキストの長さを適切に測定できるはずです。これにより、リスト行のすべての名前 textViews のレイアウト パラメータを設定するために使用できるピクセル単位の 6 が得られます。

于 2012-08-24T14:26:40.057 に答える
0

最も長い名前の直後に値を開始する必要がありますか? それとも、その最長の名前を表示できるようにするためですか? 私が提案する (そして同様の問題で行った) のは、LinearLayout ではなく、RelativeLayout を使用することです。

そこで 2 つの TextView を定義し、そのうちの 1 つは右側に重力があります。あなたのコードからわかることから、正しいフィールドは常に同じサイズですよね?したがって、それに応じて調整し、左側のスペースを自由に埋めてください。私のレイアウト例:

    <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/list_selector"
    android:orientation="horizontal"
    android:padding="3dip" >

<!-- Name-->
<TextView
    android:id="@+id/name"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentLeft="true"
    android:textColor="#040404"
    android:typeface="sans"
    android:textSize="20dip"
    android:text="Name"
    android:textStyle="bold"/>

<!-- Amount -->
<TextView
    android:id="@+id/amount"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:gravity="right"
    android:layout_marginRight="5dip"
    android:text="money"
    android:textSize="20dip"
    android:textColor="#FF8B1500"
    android:textStyle="bold"
    />
</RelativeLayout>

右側の TextView は必要なだけのスペースを埋め、左側は名前用に残されています。

私がアイデアを与えるのを手伝ってくれたことを願っています!

于 2012-08-24T14:20:55.120 に答える