Show numbers in ProgressBar

后端 未结 4 977
谎友^
谎友^ 2020-12-20 16:59

I have a ProgressBar. It works ok but I need to show the max value and the current value. They are not there.

Do I need to change to a ProgressDialog?

Clarif

相关标签:
4条回答
  • 2020-12-20 17:31

    I don't think you want to use a progressbar. It looks like a SeekBar with some numbers at either end of it.

    <LinearLayout
        android:id="@+id/LinearLayout_Lose250HandsSlider"
        android:orientation="horizontal"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
        <TextView
            android:id="@+id/TextView_MinValue"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="0"/>
        <SeekBar
            android:id="@+id/SeekBar_Lose250HandsSlider"
            android:max="250"
            android:layout_height="fill_parent"
            android:layout_width="wrap_content"
            android:layout_weight="1.0"/>
        <TextView
            android:id="@+id/TextView_CurrentValue"
            android:layout_width="wrap_content"
            android:layout_height="fill_parent"
            android:text="250"/>
    </LinearLayout>
    
    0 讨论(0)
  • 2020-12-20 17:37

    Why dont you just add the text manually, it seems like a much simple approach, I placed it where ever I wanted here, but you can just change the layout to what your need are.

    Sorry if there are any mistakes in the code, I didnt run this.

    XML:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
    <TextView android:id="@+id/tvwShortMessage"
    android:typeface="sans"
    android:textSize="14sp"
    android:textStyle="italic"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"/>
    <TextView android:id="@+id/tvwLongMessage"
    android:typeface="sans"
    android:textSize="14sp"
    android:textStyle="italic"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@id/tvwShortMessage"/>
    <LinearLayout 
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"    
    android:layout_marginBottom="15dp" 
    android:layout_below="@id/tvwLongMessage">
    <ProgressBar
    android:id="@+id/pgbAwardProgress"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"    
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_marginRight="5dp" 
    android:layout_marginTop="5dp" 
    android:layout_marginBottom="15dp" 
    android:layout_alignParentTop="true"/>
    </LinearLayout>
    <TextView android:id="@+id/pgbAwardProgressText"
    android:typeface="sans"
    android:textSize="14sp"
    android:textStyle="italic"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/pgbAwardProgress"
    android:layout_alignParentRight="true"
    android:visibility="gone"/>
    </RelativeLayout>
    

    Class:

    private class AwardsAdapter extends ArrayAdapter <AwardItem>{
    
    
        private ArrayList<AwardItem> awards = new ArrayList<AwardItem>();
    
        public AwardsAdapter(Context context, int textViewResourceId, ArrayList<AwardItem> awards) {
            super(context, textViewResourceId,awards);
            this.awards = awards;
            // TODO Auto-generated constructor stub
        }
    
        public View getView(int position, View convertView, ViewGroup parent) {
            View v = convertView;
            if (v == null) {
                LayoutInflater vi = (LayoutInflater)AwardsActivity.this.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                v = vi.inflate(R.layout.awards_row, parent, false);
            }
            AwardItem award = awards.get(position);
            ProgressBar pb = (ProgressBar) v.findViewById(R.id.pgbAwardProgress);
    
            if(award.award_type == PROGRESSIVE) {
                pb.setVisibility(View.VISIBLE);
                pb.setMax(award.requirement);
                pb.setProgress(award.current_amount);
                pb.setIndeterminate(false);
                TextView progressText = ((TextView) v.findViewById(R.id.pgbAwardProgressText));
                progressText.setVisibility(View.VISIBLE);
                progressText.setText(award.current_amount+"/"+award.requirement);
            } else {
                pb.setVisibility(View.GONE);
            }
            ((TextView) v.findViewById(R.id.tvwShortMessage)).
                          setText(MessageBuilder.buildMessage(AwardsActivity.this, award.award_text, 
                                  Integer.valueOf(award.requirement).toString()));
    
            return v;
        }
    
    }
    
    0 讨论(0)
  • 2020-12-20 17:37

    New NumberProgressBar library:

    Number progress bar

    Have a look at this awesome library NumberProgressBar in Github with many more color styles.

    enter image description here

    Credits: Mr.Daimajia,

    According to him The NumberProgressBar is a bar, slim and sexy (every man wants! ).

    0 讨论(0)
  • 2020-12-20 17:45

    ProgressBar is deisigned to show the progress. you will find a good tutorial here to show the progress accordingly. It is recommended to use AsyncTask for Progress update, because it is painless threading.

    Basic AsyncTask with a progress bar widget

    0 讨论(0)
提交回复
热议问题