我正在尝试自定义一个SeekBar以确定过去6个月内问题的发生率,因此基于此,我有4种可能的状态:无,低,中和高。
我尝试在布局中放置一个SeekBar,并在其中包含了具有预期选项的其他布局。但是,它会根据屏幕大小更改行为外观,并变得混乱。下面是使用过的代码:
SeekBar布局
<include
android:id="@+id/options"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
layout="@layout/options"
android:layout_alignLeft="@+id/seekBar"
android:layout_alignStart="@+id/seekBar"
android:layout_marginRight="11dp"
android:layout_marginEnd="11dp" />
<SeekBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/seekBar"
android:max="100"
android:layout_below="@+id/options" />
</RelativeLayout>
选项布局
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/optionN"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="left"
android:paddingLeft="12dp"
android:text="None" />
<TextView
android:id="@+id/optionL"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="left"
android:paddingLeft="10dp"
android:text="Low" />
<TextView
android:id="@+id/optionM"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:paddingRight="6dp"
android:text="Medium" />
<TextView
android:id="@+id/optionH"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="right"
android:paddingRight="8dp"
android:text="High" />
</TableRow>
答案 0 :(得分:0)
Basiclly,你需要覆盖onProgressChanged函数:
在onCreate函数中添加:
seekbar = (SeekBar) findViewById(R.id.seekBar);
seekbar.setOnSeekBarChangeListener(this);
您的类应该实现OnSeekBarChangeListener:
class yourActivity extends Activity implements OnSeekBarChangeListener
你应该覆盖的功能应如下所示:
int stepSize = 4;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progress = ((int)Math.round(progress/stepSize))*stepSize;
seekBar.setProgress(progress);
textview.setText(progress + "");
}