Android – 在进度条中心显示文字

我已经制定了一个水平进度条,它的工作完美。 我想显示一个文本视图或类似的东西在它的中间显示一个倒计时,因为酒吧正在加载。 请记住,它不是一个进度对话框,进度条驻留在一个活动中,并显示一个倒数计时器。 任何人都可以帮我,什么是最好的办法做到这一点,我怎么能做到这一点?

  • Androidbutton中的进度条
  • Android自定义ProgressBar不旋转
  • 在下载文件时更新列表视图中的进度条
  • 循环ProgressBar背景:Android Xamarin
  • 在Android中实现类似于iOS的旋转活动指示器
  • Android上的ProgressBar上的背景animation图像?
  • Progressbar和progressDialog有什么区别?
  • 如何在Android中创build像Image一样的进度条
  • 如果你的ProgressBarTextView在一个RelativeLayout里面,你可以给ProgressBar一个id,然后使用它将TextViewProgressBaralignment。 它应该显示在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在ProgressBar上显示TextView:

     ... <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> 

    最简单的方法!

    检查这个链接是我认为最好的方法

    制作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>