1、 Android的SeekBar 博客分类: · Android 使用SeekBar的时候,经常遇到的问题有如下: 1. seekbar的拖动按钮没有居中。 2. seekbar的高度有问题。 3. seekbar的拖动按钮在最左最右显示不全。 首先,要解决上述问题,要先检查layout文件在描述seekbar时,有没有正确设置图片的尺寸和检查屏幕密度与图片是否放置在相应的drawable文件夹中(drawable-hdpi, drawable-mdpi, drawable-ldpi). 在确保图片资源正确的情况下,参考如下XML: layout
2、
Xml代码
1. 3、
9. android:max="100"
10. android:progressDrawable="@drawable/seekbar_style"
11. android:thumb="@drawable/drag_ball"
12. android:id="@+id/seekBar"/>
4、android:maxHeight="12px"
android:minHeight="12px"
android:paddingLeft="18px"
android:paddingRight="18px"
android:max="100"
android:progressDrawable="@drawable/seekbar_style"
android:thumb="@drawable/drag_ball"
android:id="@+id/seekBar"/>
seekbar_style
Xml代码
1. 5、 xmlns:android="
3. 6、
10. android:id="@android:id/secondaryProgress"
11. android:drawable="@drawable/drag_bar_foreground"/>
12. 7、"@android:id/progress"
android:drawable="@drawable/drag_bar_foreground"/>
8、于seekbar图片资源中的最高值
android:maxHeight="12px"
android:minHeight="12px"
//说明进度条的最低和最大高度,解决高度问题。
android:paddingLeft="18px"
android:paddingRight="18px"
//解决拖动按钮在最左最右显示不全的问题,padding的值一般是thumb的一半宽度。
android:progressDrawable="@drawable/seekbar_style"
//设置了此值,就表示使用自定义的进度条样式,在其中可以设置进度条背景图,进度条图,缓 9、冲条图。
android:thumb="@drawable/drag_ball"
//seekbar的拖动按钮图片
android系统自带的自定义样式例子:
seekbar_style
Xml代码
1. 10、 11、"270"/>
11.
12. 12、 android:startColor="#80ffd300"
19. android:centerColor="#80ffb600"
20. android:centerY="0.75"
21. android:endColor="#a0ffcb00"
22. android:angle="270"/>
23. 13、 14、 android:startColor="#ff0099CC"
32. android:centerColor="#ff3399CC"
33. android:centerY="0.75"
34. android:endColor="#ff6699CC"
35. android:angle="270"/> 15、
36. 16、 android:startColor="#ff9d9e9d"
android:centerColor="#ff5a5d5a"
android:centerY="0.75"
android:endColor="#ff747674"
android:angle="270"/>
17、"@android:id/secondaryProgress">
18、 android:centerY="0.75"
android:endColor="#a0ffcb00"
android:angle="270"/>
19、 21、
6. android:state_pressed="true"
7. android:drawable="@drawable/thumb_pressed" />
8.
9. 22、drawable/thumb_normal" />
13.
14. 23、
19. 24、我们用一个可以改变并显示当前进度的拖动条例子来演示一下它的使用:
1、main.xml
Java代码
25、d:layout_width= "245px"
android:layout_height="25px" android:paddingLeft= "16px"
android:paddingRight="15px" android:paddingTop= "5px"
android:paddingBottom="5px" android:progress= "0" android:max= "0"
android:secondaryProgress="0" />
26、android:layout_width="fill_parent"
android:layout_height="wrap_content" android:text= "@string/hello"
android:id="@+id/TextView01" />
27、t android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
public class AndroidSeekBar extends Activity {
/** Called when the activity is first created. */
@Override
public vo 28、id onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout.main);
// 找到拖动条和文本框
final SeekBar sb = (SeekBar) findViewById(R.id.SeekBar01);
final TextView tv1 = (TextView) findViewById(R.id.TextView01); 29、
// 设置拖动条的初始值和文本框的初始值
sb.setMax(100 );
sb.setProgress(30 );
tv1.setText("当前进度:" + sb.getProgress());
// 设置拖动条改变监听器
OnSeekBarChangeListener osbcl = new OnSeekBarChangeListener() {
@Override
public 30、void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
tv1.setText("当前进度:" + sb.getProgress());
Toast.makeText(getApplicationContext(), "onProgressChanged" ,
Toast.LENGTH_SHORT).show();
31、 }
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
Toast.makeText(getApplicationContext(), "onStartTrackingTouch" ,
Toast.LENGTH_SHORT).show();
}
@Override
32、 public void onStopTrackingTouch(SeekBar seekBar) {
Toast.makeText(getApplicationContext(), "onStopTrackingTouch" ,
Toast.LENGTH_SHORT).show();
}
};
// 为拖动条绑定监听器
sb.setOnSeekBarChangeListener(osbcl);
}
}
3、运行程序:






