Як програмно створити ProgressBar?


77

Мій додаток потрібно створити невеликий ProgressBarпрограмно. ProgressBarне має методу для встановлення стилю (я хочу невеликий ProgressBar). Конструктор може взяти AttributeSet, однак, це інтерфейс і вимагає від мене набору функцій. Чи є спосіб встановити ProgressBarневеликий стиль? (Я не можу використовувати XML для створення ProgressBar.)

Відповіді:


175

Здебільшого, якщо ви надаєте AttributeSetвручну, вам доводиться використовувати один із Android. На щастя, вони розкрили набір атрибутів, який описує невеликий індикатор прогресу. Використовуйте цей код:

progressBar = new ProgressBar(activity, null, android.R.attr.progressBarStyleSmall);

Це робить індикатор вигляду жовтим та старим замість тонкого блакитного (нового).
AlikElzin-kilaka

8
@kilaka лише для подальшого використання, змініть android.R.attr.progressBarStyleSmall на android.R.attr.progressBarStyleHorizontal для нового :)
ElaGorilaki

1
@BabyGorilla І чи працює progressBarStyleHorizontal на всіх версіях Android ?!
Dr.jacky

3
@Neil Traft Я спробував цей код, але не працював. Отже, я повинен покликати ще щось, щоб показати це?
Абдулхамід Дайбан

2
@AbdulhamidDhaiban Потрібно додати своє ProgressBarдо ViewGroupвподобання LinearLayout, тоді лише воно з’явиться на екрані.
CopsOnRoad

12

Створіть файл xml макета в каталозі res / layout із бажаним рядком прогресу, що містить усі необхідні атрибути:

<?xml version="1.0" encoding="utf-8"?>
<ProgressBar
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content" ... />

Далі в класі Activity ви можете створити об’єкт ProgressBar із цього макета:

LayoutInflater inflater = getLayoutInflater();
    ProgressBar bar = (ProgressBar ) inflater.inflate(R.layout.small_progress_bar, null);

де R.layout.small_progress_bar посилається на XML-файл вашого макета.

Ви все ще не можете використовувати файл xml?


Замість того, щоб роздувати вручну, ви можете встановити перегляд вмісту на цей індикатор прогресу та змінити макет після того, як ваші дані зберігаються.
amalBit

0

Activity.java

  progressBar = (ProgressBar) findViewById(R.id.progressbar);
 `progressBar.setVisibility(View.VISIBLE);`// To Show ProgressBar 
 `progressBar.setVisibility(View.INVISIBLE);` //To Hide ProgressBar

Перевірте тут ProgressDialog застарілим. Який альтернативний варіант використовувати?


Не впевнений, але чи працює progressBar завжди у фоновому режимі (просто прихований від інтерфейсу користувача) після того, як робить його невидимим?
Шамбху

@Shambhu привіт ,,, так, він буде запущений у фоновому режимі ... але якщо ви зробите View.GONE, він не буде працювати у фоновому режимі, а також на передньому плані, оскільки об'єкт видалено ... я сподіваюся, це може вам допомогти
Gowthaman M
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.