Android 拖動條/滑動條控件、星級評分控件


 

ProgressBar有2個子控件:

SeekBar   拖動條控件

RatingBar   星級評分控件

 

 

1、拖動條控件

1 <SeekBar
2                 android:layout_width="300dp"
3                 android:layout_height="wrap_content"
4                 android:id="@+id/seekBar"
5                 android:min="0"
6                 android:max="100"
7                 android:progress="50" />   <!--滑塊默認位置-->

 

 

也可以使用自定義的滑塊:

1  <SeekBar
2         android:layout_width="300dp"
3         android:layout_height="100dp"
4         android:id="@+id/seekBar"
5         android:thumb="@drawable/a"   <!--使用自定義的圖片作為滑塊-->
6         android:min="0"
7         android:max="100"
8         android:progress="50" />

 

說明:

並不會自動顯示對應的刻度值。

滑塊可以滑動,但沒有事件響應。需要我們在.java文件中添加事件監聽:

 

 1 SeekBar mySeekBar=findViewById(R.id.seekBar);
 2         mySeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
 3             /*
 4             三個形參:
 5             SeekBar seekBar   觸發此事件/監聽的Seekbar
 6             int progress   當前刻度值。
 7             boolean fromUser   是否為用戶拖動產生的響應,這個不常用
 8             雖然setText(int x)可以設置int型的值,但這個int指的是 R.string.app_name 這樣的常量值,不是整型數字。不能setText(progress)這樣用,要先轉換為String。
 9              */
10             
11             //滑動滑塊時觸發
12             @Override
13             public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
14                 //判斷改變的是否是指定的滑動條。預防當前Activity對應的xml布局中有多個滑動條,如果只有一個滑動條,則不必判斷
15                if (seekBar.getId()==R.id.seekBar){
16 
17                }
18             }
19 
20             //滑動開始時觸發
21             @Override
22             public void onStartTrackingTouch(SeekBar seekBar) {
23                 if (seekBar.getId()==R.id.seekBar){
24 
25                 }
26             }
27 
28             //滑動停止時觸發
29             @Override
30             public void onStopTrackingTouch(SeekBar seekBar) {
31                 if (seekBar.getId()==R.id.seekBar){
32 
33                 }
34             }
35         });
36     }

 

滑動滑塊一次觸發的事件:

最先開始時觸發   onStartTrackingTouch()   ,滑動過程中一直觸發   onProgressChanged(),最后停止時觸發   onStopTrackingTouch()。

就是說滑動過程中會不停地觸發  onProgressChanged()  。

 

 

 

 

 

2、星級評分控件

1  <RatingBar
2         android:layout_width="wrap_content"
3         android:layout_height="wrap_content"
4         />

 

總共默認5顆星,初始默認選擇0顆星,默認可修改,默認步長為0.5,即可以點亮半顆星。也可手動設置:

 

1 <RatingBar
2         android:layout_width="wrap_content"
3         android:layout_height="wrap_content"
4         android:id="@+id/ratingBar"
5         android:isIndicator="true"   <!--是否可修改,true是不可修改,false是可修改,默認為fasle-->
6         android:numStars="7"   <!--總星數-->
7         android:rating="5"    <!--初始默認星數-->
8         android:stepSize="1" />    <!--步長-->

 

有時候只是向用戶展示評分,並不需要用戶評分,比如排行旁的xx指數,這時就需要設置   android:isIndicator="true"    不可修改。

默認為false,可修改。

 

在.java文件中獲取已點亮的星數:

1  RatingBar ratingBar=findViewById(R.id.ratingBar);
2         //獲取已點的星數,因為步長可以為小數,所以獲取到的是float
3         float rates=ratingBar.getRating();

 

 

 

 

在Android中,幾乎所有控件都提供了setXxx()、getXxx()方法供我們在.java文件中操作控件的屬性。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM