Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 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"
/>