style="" :SeekBar的樣式,可使用自定義的樣式或內建樣式
自定義 style 中即可帶入自定義的滑塊及進度條樣式,例如:
<style name="MySeekbarStyle" >
<item name="android:maxHeight">10dp</item>
<item name="android:minHeight">10dp</item>
<item name="android:progressDrawable">@drawable/Myprogress</item>
<item name="android:thumb">@mipmap/Mythumb</item>
</style>
為 SeekBar 設置監聽器,處理 SeekBar 被觸及或是進度變化過程中要進行的事件
seekBar.setOnSeekBarChangeListener(object : SeekBar.OnSeekBarChangeListener{})
三個必須 override 的 funtion:
onProgressChanged
onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean)
SeekBar 進度變更過程觸發,設定進度改變時要做的事
override fun onProgressChanged(seekBar: SeekBar?, progress: Int, fromUser: Boolean) {
discount.setText(progress.toString() + "%")
textView.setText("${editText.text.toString().toFloat() * progress/100}")
pg= progress
//pg 為外部自定義變數,用來儲存 progress 供其他地方使用
seekBar:使用者滑動的 SeekBar
progress:SeekBar 的進度
fromUser:如果是使用者滑動造成進度變動則為 True,若是經 Code 變更進度則為 False
addTextChangedListener (watcher: TextWatcher)
editText.addTextChangedListener(object :TextWatcher{})
用來監聽 Text 的變化,TextWatcher 為一個 Interface,因此需實作裡面的三個 abstract class
beforeTextChanged
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {}
s:Text 變化前的字串
start:Text 開始變化的位置
count:即將被取代的字符個數
after:用來取代原字符的字符
舉例:原本 Text 內容為 1,接著輸入 2 的時候:
變化前的字串為 1(s),然後將從 1(start)的位置,有 0(count)個字符將被長度為 1(after)的字符取代
onTextChanged
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
// 在 EditText 發生變化的同時,改變顯示的 TextView
if(editText.text.toString() != "")
textView.setText("${editText.text.toString().toFloat() * pg/100}")
else textView.setText("0")
s:Text 變化前的字串
start:Text 開始變化的位置
before:即將被取代的原字符長度
count:剛剛取代原字符的字符個數
舉例:原本 Text 內容為 1,接著輸入 2 的時候:
變化前的字串為 1(s),然後將從 1(start)的位置,有長度為 0(before)字符剛剛被 1(count)個字符取代
afterTextChanged
override fun afterTextChanged(s: Editable?) {}
s:被改變的字符串