SeekBar 小部件
最后修改于 2012年11月5日
在本章的 Android 开发教程中,我们将介绍 SeekBar 小部件。
SeekBar
小部件用于从一系列值中选择一个值。用户拖动该小部件的滑块来选择特定值。为了处理 SeekBar
事件,我们实现了 SeekBar.OnSeekBarChangeListener
监听器。
SeekBar 示例
我们有一个 SeekBar
小部件和一个 TextView
小部件。SeekBar
的当前值显示在 TextView
中。Android manifest 文件保持不变。
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <SeekBar android:id="@+id/sbId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:max="100" android:progress="50" /> <TextView android:id="@+id/tvId" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="10dp" /> </LinearLayout>
在 main.xml
布局文件中,我们定义了两个小部件。SeekBar 小部件和 TextView 小部件。
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="app_name">SeekBar</string> <string name="init_tv_value">50</string> </resources>
这是 strings.xml
资源文件。init_tv_value
是 TextView
小部件的初始值。
package com.zetcode.seekbar; import android.app.Activity; import android.os.Bundle; import android.widget.TextView; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; public class MainActivity extends Activity implements OnSeekBarChangeListener { TextView tv; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); SeekBar sb = (SeekBar) findViewById(R.id.sbId); sb.setOnSeekBarChangeListener(this); tv = (TextView) findViewById(R.id.tvId); String val = this.getString(R.string.init_tv_value); tv.setText(val); } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { tv.setText(String.valueOf(progress)); } @Override public void onStartTrackingTouch(SeekBar seekBar) { // not implemented } @Override public void onStopTrackingTouch(SeekBar seekBar) { // not implemented } }
SeekBar
的当前值被设置为 TextView
小部件。
public class MainActivity extends Activity implements OnSeekBarChangeListener
MainActivity
类实现了 OnSeekBarChangeListener
。我们需要定义三个抽象方法。onProgressChanged()
、onStartTrackingTouch()
和 onStopTrackingTouch()
方法。最后两个方法未实现。它们与触摸手势有关。我们只提供空方法。
SeekBar sb = (SeekBar) findViewById(R.id.sbId); sb.setOnSeekBarChangeListener(this);
我们获取到 SeekBar
小部件的引用并为其设置监听器。
tv = (TextView) findViewById(R.id.tvId); String val = this.getString(R.string.init_tv_value); tv.setText(val);
我们获取到 TextView
小部件的引用。我们从字符串资源中检索 init_tv_value
并将其设置为 TextView
。
@Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { tv.setText(String.valueOf(progress)); }
当我们移动 SeekBar
的滑块时,会调用 onProgressChanged()
方法。progress 参数是 SeekBar
的当前值。默认范围是 0..100。我们将 SeekBar
的当前值设置为 TextView
小部件。

在本章的 Android 开发教程中,我们已经介绍了 SeekBar
小部件。