21

「ボタン」を拡張し、マルチレベルのスピナーとして機能するカスタム Android ビューがあります。それを押すと、ユーザーが選択を絞り込むことができる一連のスピナーのようなダイアログが表示されます。この場合、ユーザーは集荷を希望する日、時間、分 (5 分間隔) を選択できます。ダイアログがアクティブでない場合、現在の選択内容のテキスト説明がボタンに表示されます。

ユーザーがボタンを押すことで選択を変更できることを視覚的に示したいと思います。また、スピナーの外観はまさに私が必要としているものだと思います。デバイスの他のスピナーと同じ外観にして、ボタンのテキストを簡単に変更できるようにしたいのですが、それを実現する方法がわかりません。デバイス上の他のスピナーと一貫性のあるスピナーのようなアイコンとしてボタンを表示するにはどうすればよいですか?

4

5 に答える 5

51

これは、スピナーのようなスタイルのボタンを描画する方法です。

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="New Button"
    android:id="@+id/button"
    style="?android:attr/spinnerStyle" />

それでおしまい!

アップデート

次のようなものも機能するはずです。

<style name="SpinnerButtonStyle" parent="android:Widget.Holo.Spinner">
    <item name="android:textColor">@color/entry_field</item>
    <item name="android:textAppearance">?android:attr/textAppearanceMedium</item>
</style>

その他のスタイルについては、SDK を参照してください。sdk/platforms/android-18/data/res/values/styles.xml

于 2013-05-21T06:27:32.750 に答える
7

私は自分の質問に対する解決策を見つけました。ボタンのコンストラクターで、背景のドローアブルリソースを「btn_dropdown」に設定しました。

public DateAndTimePicker(Context context) {
    super(context);
    this.setBackgroundResource(android.R.drawable.btn_dropdown);
}

スピナーボタンと同じように見え、ボタンの動作は変更されておらず、ボタンのテキストは正しく中央に配置されています。

于 2011-12-28T18:27:31.293 に答える
3

これは、スピナーのような描画ボタンの私のソリューションです:

<Button
    android:id="@+id/my_button"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:paddingLeft="12dp"
    android:gravity="center_vertical|left"
    android:enabled="true"
    android:text="@string/my_button_text"
    android:textColor="@color/my_button_color"
    style="@style/MyButton" />

これは私の res/values/styles.xml の一部です:

<style name="MyButton" parent="@android:style/Widget.Spinner">
</style>

これは私の res/values-v14/styles.xml の一部です:

<style name="MyButton" parent="@android:style/Widget.DeviceDefault.Light.Spinner">
</style>
于 2013-01-07T00:43:36.797 に答える
3

この XML レイアウトは、ボタンをスピナーのように見せます。

<!-- ****  Button styled to look like a spinner  **** -->
    <Button
        android:id="@+id/btn_category"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@android:drawable/btn_dropdown"
        android:gravity="center_vertical|left" 
        android:textSize="18sp" />
于 2012-05-10T15:56:02.050 に答える
1

ボタンに android:background 属性を定義して、スピナーのようなドローアブルを使用できます。これを行うには、スピナー用の 9 パッチ イメージを作成し、それを res/drawable フォルダーに配置してから、カスタム スピナー ボタンのスタイルを追加しました。

<style name="DialogSpinner">
  <item name="android:background">@drawable/dlg_spinner_background</item>
  <item name="android:textColor">#919090</item>
  <item name="android:layout_height">wrap_content</item>
  <item name="android:layout_width">wrap_content</item>
  <item name="android:layout_marginTop">2px</item>
  <item name="android:layout_marginBottom">2px</item>
</style>

ボタンの場合、レイアウトの XML レイアウトに style 属性を追加します。

<Button
  android:id="@+id/okButton"
  style="@style/DialogSpinner"
  android:textColor="#a6a2a2"
  android:text="something"
/>
于 2011-12-27T20:08:41.510 に答える