Я уже сделал горизонтальный индикатор выполнения, и он отлично работает. Я хотел бы отобразить текстовое изображение или что-то подобное прямо посередине, показывая обратный отсчет, когда панель загружается. Имейте в виду, что это не диалог прогресса, индикатор выполнения находится внутри действия и показывает таймер обратного отсчета. Может ли кто-нибудь помочь мне, что это лучший способ сделать это и как я могу это сделать?Android - отображение текста в центре индикатора прогресса
ответ
Если ваш ProgressBar
и TextView
находятся внутри RelativeLayout
вы можете дать ProgressBar
идентификатор, а затем выровнять TextView
с ProgressBar
с помощью этого. Затем он должен отображаться поверх ProgressBar
. Убедитесь, что фон является прозрачным, так что вы все еще можете увидеть ProgressBar
Например:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ProgressBar
android:layout_width="match_parent"
android:layout_height="match_parent"
// other attributes
android:id="@+id/PROGRESS_BAR"
>
<TextView
android:background="#00000000" // transparent
// other attributes
android:layout_alignLeft="@id/PROGRESS_BAR"
android:layout_alignTop="@id/PROGRESS_BAR"
android:layout_alignRight="@id/PROGRESS_BAR"
android:layout_alignBottom="@id/PROGRESS_BAR"
>
</RelativeLayout>
Вы можете использовать FrameLayout для отображения TextView над ProgressBar:
...
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progress"
style="@android:style/Widget.ProgressBar.Horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:progressDrawable="@drawable/progressbar" />
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerVertical="true" />
...
</RelativeLayout>
</FrameLayout>
Хорошее решение. Не уверен в цели Relative Layout - кажется излишним. – dazed
@dazed FrameLayout следует использовать для хранения одного дочернего представления, поскольку может быть сложно организовать дочерние представления таким образом, чтобы они были масштабируемы до разных размеров экрана, если бы дети не перекрывали друг друга. Тем не менее, вы можете добавить несколько детей в FrameLayout и управлять своей позицией в FrameLayout, назначив гравитацию каждому ребенку, используя атрибут android: layout_gravity. Источник: https://developer.android.com/reference/android/widget/FrameLayout.html В возобновлении RelativeLayout лучше, когда вы хотите поместить много просмотров и упорядочить их относительно друг друга. – androidevil
простейшим способом !
Check this link it is the best way as my point of view
Сделать TextProgressBar
public class TextProgressBar extends ProgressBar {
private String text;
private Paint textPaint;
public TextProgressBar(Context context) {
super(context);
text = "HP";
textPaint = new Paint();
textPaint.setColor(Color.BLACK);
}
public TextProgressBar(Context context, AttributeSet attrs) {
super(context, attrs);
text = "HP";
textPaint = new Paint();
textPaint.setColor(Color.BLACK);
}
public TextProgressBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
text = "HP";
textPaint = new Paint();
textPaint.setColor(Color.BLACK);
}
@Override
protected synchronized void onDraw(Canvas canvas) {
// First draw the regular progress bar, then custom draw our text
super.onDraw(canvas);
Rect bounds = new Rect();
textPaint.getTextBounds(text, 0, text.length(), bounds);
int x = getWidth()/2 - bounds.centerX();
int y = getHeight()/2 - bounds.centerY();
canvas.drawText(text, x, y, textPaint);
}
public synchronized void setText(String text) {
this.text = text;
drawableStateChanged();
}
public void setTextColor(int color) {
textPaint.setColor(color);
drawableStateChanged();
}
}
это то, что работает для меня:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:id="@+id/progressBar"
style="@android:style/Widget.ProgressBar.Horizontal"
android:progressDrawable="@drawable/customprogressbar"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:max="100"/>
<TextView
android:id="@+id/progressBarinsideText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:gravity="center"
/>
</RelativeLayout>
Это то, что я использовал для отображения текста прогресса выше блесны с центром на веб-просмотра:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/help_webview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#F22"
android:scrollbars="none" />
<ProgressBar
android:id="@+id/progressBar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerInParent="true"
android:layout_centerVertical="true" />
<TextView
android:id="@+id/progressBarMessage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Loading, please wait..."
android:layout_centerInParent="true"
android:layout_above="@id/progressBar"
android:background="#00000000" />
</RelativeLayout>
- 1. Укладка индикатора прогресса Android
- 2. Внедрение пользовательского индикатора прогресса Android
- 3. Ускорение памяти индикатора прогресса Android
- 4. Android - обновление индикатора прогресса, правильно
- 5. Ресурс индикатора прогресса
- 6. Google+ в стиле индикатора прогресса Android?
- 7. Добавление индикатора прогресса в android webview java
- 8. Отображение индикатора активности в android
- 9. Node.js индикатор индикатора прогресса
- 10. Цвет индикатора прогресса vb.net
- 11. Исключить фон индикатора прогресса
- 12. Отображение индикатора прогресса в списке во время загрузки
- 13. Укладка индикатора прогресса в ActionbarSherlock
- 14. Избавление от индикатора прогресса SeekBar
- 15. WPF: Создание динамического индикатора прогресса
- 16. Обновление прогресса в центре экрана
- 17. Использование индикатора прогресса с sendSynchronousRequest
- 18. Настроенный индикатор прогресса в качестве индикатора в Android
- 19. Изменение вторичного текста прогресса в диалоговом окне прогресса в Android
- 20. Как добавить два цветных индикатора прогресса в android?
- 21. Прогресс цвета прогресса прогресса в android
- 22. Связывание индикатора прогресса с медиаэлементом в wpf
- 23. Истекшее использование индикатора прогресса в Qt?
- 24. Обновление индикатора прогресса в функции javascript
- 25. Создание пользовательского индикатора прогресса в ios
- 26. Отображение прогресса в C#
- 27. Android: отображение пользовательского диалога в центре контейнера
- 28. Отображение текста песни MP3 в Android
- 29. Отображение индикатора выполнения и текста в ячейке сетки данных (XAML)?
- 30. Отображение строки прогресса с jquery
Только этот android: layout_alignTop = "@ id/simpleProgressBar" отлично работает для меня. –