#android
#Android
Вопрос:
В моем приложении у меня есть что-то вроде этого:
Button playBtn = (Button) findViewById(R.id.play);
ProgressBar pb1 = new ProgressBar(this);
playBtn.setBackgroundDrawable(pb1);
Но это не работает. И я знаю почему, — pb1 не является возможностью рисования. Но как иначе я могу установить фон моей кнопки воспроизведения на индикатор выполнения? Я использую программный способ создания индикатора выполнения, и у меня есть кнопка воспроизведения в моем ресурсе .xml.
Ответ №1:
Ах, вы действительно не можете сделать то, что пытаетесь сделать: нет способа использовать один вид в качестве фона другого вида.
Что вы можете сделать, это нечто подобное тому, что делает индикатор заряда батареи Android в области уведомлений: создайте несколько отображаемых объектов (я думаю, что индикатор заряда батареи использует 5 или 6 разных изображений, по 1 для каждого этапа процесса перезарядки), а затем используйте таймер или внешние события для переключения отображения фона для вашей кнопки: это имитирует индикатор выполнения.
Дайте мне знать, если это поможет.
Комментарии:
1. Это будет непросто… У меня есть потоковый проигрыватель с множеством методов. Во время загрузки песни индикатор выполнения отображается отдельно в той же строке, в которой отображаются кнопки «Предыдущая», «воспроизвести» и «следующая». Но это не выглядит красиво… Когда песня загружается, я хочу заменить кнопку воспроизведения индикатором выполнения. Когда он загружен, кнопка воспроизведения заменяет индикатор выполнения обратно.
2. Затем измените видимость кнопки воспроизведения на »
GONE
использованиеsetVisibility
» и видимость панели прогресса на »VISIBLE
во время воспроизведения»; затем установите для кнопки воспроизведения значение »VISIBLE and the ProgressBar to
ПРОПАЛ», когда она не воспроизводится.3. Ах, вы пытаетесь заменить, А не установить его в качестве фона. Поместите индикатор выполнения и кнопку воспроизведения в ViewSwitcher (см. developer.android.com/reference/android/widget / … ) и поместите это там, где сейчас находится кнопка воспроизведения. Затем вы можете переключаться с одного на другой по требованию.
4. @Joseph Earl, звучит неплохо, я попытаюсь это сделать, хотя я не уверен, где изначально разместить индикатор выполнения.
5. ViewSwitcher заботится о расположении: они занимают одинаковое пространство, и одновременно виден только один.
Ответ №2:
Сделайте прозрачную кнопку (background =»@null») и разместите ее на панели прогресса, используя RelativeLayout или FrameLayout.
Это проще, чем кажется:
<FrameLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<Button
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@null"
android:textColor="@android:color/white"
android:text="asdasd"/>
</FrameLayout>
Сделайте то же самое в коде, если хотите.
Комментарии:
1. обновлено … надеюсь, это поможет, как сделать это проще, к сожалению, я не знаю
Ответ №3:
Вы уверены, что вам нужно Button
здесь? Mb достаточно разместить ProgressBar
only и сделать его интерактивным с помощью настройки onClickListener
.
Комментарии:
1. Да нет, у меня полноценный плеер, без кнопочек никак не обойтись =)
2. Да сделай ты обычную красивую кнопку со статическим бэкграундом и не парься 🙂
3. Так и сделала. В определенное время давала visible для одно и invisible для другого 😉