ProgressBar有2個子控制項: SeekBar 拖動條控制項 RatingBar 星級評分控制項 1、拖動條控制項 也可以使用自定義的滑塊: 說明: 並不會自動顯示對應的刻度值。 滑塊可以滑動,但沒有事件響應。需要我們在.java文件中添加事件監聽: 滑動滑塊一次觸發的事件: 最先開始時觸發 onS ...
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文件中操作控制項的屬性。