赞
踩
开发中遇到如题的需求找了一些方法,发现一起移动都会有偏差,于是就自己修改了下代码,可以实现无偏差一起滑动,代码如下:
1.布局代码
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/screen_bg"
android:orientation="vertical">
<TextView
android:id="@+id/tv_quota"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="#FF233845"
android:textSize="15sp"/>
<SeekBar
android:id="@+id/sb_quota"
style="@style/mprogress_horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:thumb="@mipmap/bulegress_button" />
</LinearLayout>
2.activity代码
private SeekBar sb_quota;
private TextView tv_quota;
tv_quota = (TextView) rootView.findViewById(R.id.tv_quota);
sb_quota = (SeekBar) rootView.findViewById(R.id.sb_quota);
sb_quota.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
tv_quota.setText("¥" + progress);
int quotaWidth = tv_quota.getWidth();
final Drawable thumb = seekBar.getThumb();
//获取thumb的位置
final Rect bounds = thumb.getBounds();
//thumb的位置为canvas的相对位置,减去thumb和textview的差值的一半,另外还要加上SeekBar相对屏幕距离
tv_quota.setX((thumb.getIntrinsicWidth() - quotaWidth) / 2
+ bounds.left + seekBar.getX());
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
});
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。