Android: рисование кнопки в качестве счетчика

У меня есть пользовательский вид андроида, который расширяет «Button» и действует как многоуровневый счетчик – когда он нажат, он отображает серию похожих на spinner-диалогов, которые позволяют пользователю уточнить свой выбор. В этом случае он позволяет пользователю выбирать день, затем час, затем минута (через 5 минут), чтобы они могли получить пикап. Когда диалог не активен, на кнопке отображается текстовое описание текущего выбора.

Я хочу визуально указать, что пользователь может изменить выбор, нажав кнопку, и подумайте, что внешний вид прядильника – именно то, что мне нужно. Я хочу, чтобы внешний вид был таким же, как и другие проигрыватели на устройстве, и имел возможность легко менять текст на кнопке, но я не уверен, как достичь этого, если бы он не был kludgy. Как мне следует отображать кнопку в виде символа, подобранного прядильщиком, который согласуется с другими прядильщиками на устройстве?

Solutions Collecting From Web of "Android: рисование кнопки в качестве счетчика"

Вот как мне удалось нарисовать кнопку, которая была написана как Spinner:

<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

Я нашел решение своего вопроса. В конструкторе для моей кнопки я устанавливаю ресурс для выделения фона как «btn_dropdown».

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

Он выглядит так же, как кнопки счетчика, ни одно из действий кнопки не изменилось, и текст кнопки расположен правильно.

Это мое решение кнопки рисования, как прядильщик:

 <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> 

Этот 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" /> 

Вы можете определить атрибут android: background на вашей кнопке, чтобы использовать drawable, который выглядит как прядильщик. Я сделал это, создав 9-патч-образ для счетчика, поместив его в папку res / drawable, а затем добавив стиль для моей настраиваемой кнопки Spinner:

 <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 для вашего макета:

 <Button android:id="@+id/okButton" style="@style/DialogSpinner" android:textColor="#a6a2a2" android:text="something" /> для <Button android:id="@+id/okButton" style="@style/DialogSpinner" android:textColor="#a6a2a2" android:text="something" /> - <Button android:id="@+id/okButton" style="@style/DialogSpinner" android:textColor="#a6a2a2" android:text="something" />