Android: рисование кнопки в качестве счетчика
У меня есть пользовательский вид андроида, который расширяет 'Button' и действует как многоуровневый счетчик - когда он нажимается, он отображает серию спин-подобных диалогов, которые позволяют пользователю уточнить свой выбор. В этом случае он позволяет пользователю выбирать день, затем час, затем минута (через 5 минут), чтобы они могли получить пикап. Когда диалог не активен, на кнопке отображается текстовое описание текущего выбора.
Я хочу визуально указать, что пользователь может изменить выбор, нажав кнопку, и подумайте, что вид прядильника - это именно то, что мне нужно. Я хочу, чтобы внешний вид был таким же, как у других проигрывателей на устройстве, и имел возможность легко менять текст на кнопке, но я не уверен, как достичь этого, если бы он не был kludgy. Как мне следует отображать кнопку в виде символа, подобранного прядильщиком, который совместим с другими прядильщиками на устройстве?
Ответы
Ответ 1
Я нашел решение своего вопроса. В конструкторе для моей кнопки я устанавливаю ресурс для рисования фона как "btn_dropdown".
public DateAndTimePicker(Context context) {
super(context);
this.setBackgroundResource(android.R.drawable.btn_dropdown);
}
Он выглядит так же, как кнопки счетчика, ни одно из действий кнопки не изменилось, и текст кнопки расположен правильно.
Ответ 2
Вот как мне удалось нарисовать кнопку, созданную как 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
Ответ 3
Этот формат XML делает кнопку похожей на spinner.
<!-- **** 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" />
Ответ 4
Это мое решение кнопки рисования, например, spinner:
<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>
Ответ 5
Вы можете определить атрибут 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>
Для вашей кнопки добавьте атрибут style в макет XML для вашего макета:
<Button
android:id="@+id/okButton"
style="@style/DialogSpinner"
android:textColor="#a6a2a2"
android:text="something"
/>