6

値をフィードする ArrayAdapter を備えた Spinner があります。このビューのレイアウトは次のようになります。

        <TextView
           android:text="Household Income: "
           android:layout_width="wrap_content"
           android:layout_height="fill_parent"
           android:gravity="center_vertical" />

        <Spinner
           android:id="@+id/incomespinner"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:padding="2dip"  />

問題は、テキストがビューに長すぎて、結果が非​​常に醜いスピナーになることです。スクリーンショットでわかるように:

代替テキスト
(ソース: janusz.de の janusz )

独自の TextView の ID をアダプターに渡そうとしましたが、スピナーを表示するたびに、指定した ID が無効であるという例外が発生します。

04-26 17:38:39.695: ERROR/AndroidRuntime(4276): android.content.res.Resources$NotFoundException: Resource ID #0x7f09003a type #0x12 is not valid

TextView はどこで定義する必要がありますか? 別のxmlファイルで?周囲のビューグループで?

アダプターの初期化とテキストビューの定義の例を見ることができれば、私は大いに役立ちますか?

4

3 に答える 3

6

Adapter の getView メソッドをオーバーライドして、カスタム リスト ビュー アイテムを作成します。

View getView(int position, View  convertView, ViewGroup  parent) {
     TextView tv = null;
     if(covertView instanceof TextView) {
          tv = (TextView) convertView;
     } else {
          tv = new TextView(this);
          tv.setText("Awesome Text");
     }
     return tv;
}

また、アダプターを作成するときに、アイテムに使用するレイアウトを渡すことができます。その場合、ConvertView は RelativeLayout または LinearLayout になります。

于 2010-04-26T18:01:52.713 に答える
3

答えは、Spinner の定義からパディングを削除することでした。スピナーのパディングを設定するたびに、テキストの形が崩れます。

スピナー ドローアブルは、ナイン パッチのパディング ボックスを使用して、コンテンツをどこに描画するかを決定します。パディングを手動で設定すると、パディング ボックスからのパディングの定義が上書きされます。

パディング ボックスに加えてパディングを設定する場合は、そのパディン ボックス内のすべてを追加のレイアウト コンテナーにラップする必要があります。

于 2010-05-06T11:50:24.400 に答える
1

/home/user/android-sdk-linux/tools/./draw9patch (Linux 用) を使用します。Windows では、android-sdk-windows ディレクトリのツールに移動し、draw9patch を実行します。

そのようなイメージを使用します。例:

ここに画像の説明を入力

画像の黒い線にご注意ください。(この黒い線は draw9patch によって生成されます)

画像結果は拡張ファイル 9 に追加されます。例: img.9.png (IMG EXPANSIVE HORIZONTAL AND VERTICAL)

于 2012-01-25T13:41:29.980 に答える