我想自定义搜索栏以满足我的需求:
拇指只能放在四个固定位置。例如,如果我将搜索条的最大属性设置为120,则四个固定位置为0,40,80 120。 此外,我想要指示器告诉人们当前所选位置的方式。所以我这样做:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/ll_id"
android:paddingLeft="10dp">
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="small"/>
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="middle"/>
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<TextView
android:id="@+id/tv3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="big"/>
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"/>
<TextView
android:id="@+id/tv4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="extrabig"/>
</LinearLayout>
<SeekBar android:id="@+id/sk"
android:layout_below="@+id/ll_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="120"
android:paddingLeft="0dp"
android:paddingRight="0dp"
android:layout_marginRight="0dp"/>
</RelativeLayout>
public class CustomSeekBar extends FrameLayout {
private SeekBar sk;
private OnWhichSelected selected;
public CustomSeekBar(Context context) {
this(context, null);
}
public CustomSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
LayoutInflater.from(context).inflate(R.layout.customseekbar_layout, this, true);
sk = (SeekBar) this.findViewById(R.id.sk);
sk.setProgress(0);
callbackhelp(Which.SMALL);
sk.setOnSeekBarChangeListener(new OnSeekBarChangeListener(){
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// TODO Auto-generated method stub
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// TODO Auto-generated method stub
int seekProgress = seekBar.getProgress();
if(seekProgress<seekBar.getMax()/6){
callbackhelp(Which.SMALL);
seekBar.setProgress(0);
}else if(seekProgress>=seekBar.getMax()/6 && seekProgress<3*(seekBar.getMax()/6)){
callbackhelp(Which.MIDDLE);
seekBar.setProgress(seekBar.getMax()/3);
}else if(seekProgress>=3*(seekBar.getMax()/6) && seekProgress<5*(seekBar.getMax()/6)){
callbackhelp(Which.LARGE);
seekBar.setProgress(4*(seekBar.getMax()/6));
}else if(seekProgress>=5*(seekBar.getMax()/6)){
callbackhelp(Which.EX_LARGE);
seekBar.setProgress(seekBar.getMax());
}
}
});
}
private void callbackhelp(Which which){
if(selected!=null){
selected.onSeleted(which);
}
}
public enum Which{
SMALL,
MIDDLE,
LARGE,
EX_LARGE
}
public interface OnWhichSelected{
void onSeleted(Which which);
}
}
你可以看到拇指没有对准中间位于&#34;中间&#34;指示器,如何解决这个问题,以便拇指可以在不同设备上的每个指示器下对齐中心?感谢
答案 0 :(得分:0)
使用以下代码替换您的线性布局,它可能会对您有所帮助。
<LinearLayout
android:id="@+id/ll_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:paddingLeft="10dp">
<TextView
android:id="@+id/tv1"
android:gravity="center"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="small" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/tv2"
android:gravity="center"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="middle" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/tv3"
android:layout_width="0dp"
android:gravity="center"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="big" />
<View
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1" />
<TextView
android:id="@+id/tv4"
android:gravity="center"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="extrabig" />
</LinearLayout>