我需要將「開始點」置於搜索欄的中央。
我該怎麼做?Seekbar爲兩個值[-50,0,50]
回答
我面臨同樣的問題。感謝Commonsware指出正確的方向。我寫了一個受code.google.com/p/range-seek-bar啓發的課程)來獲得解決方案。
要在中間開始,你可以調用setProgress()
與那就是你的總範圍的一半的值。
要讓SeekBar
在中間開始並結束(即,藍線從中間向左或從中間向右),您需要創建自己的替代品SeekBar
,或查找別人誰做了這個,因爲這不支持SeekBar
本身。
'自己更換SeekBa r',你是不是'風格'? – lysenkobv
@lysenkobv:不,我的意思是一個Java類。 'SeekBar',就像繼承它的'ProgressBar'一樣,被設計爲將條的起點放在左邊。如果可以通過風格改變,我會感到很驚訝。我期望你將需要創建你自己的'View'來處理這個問題。例如,'RangeSeekBar'(https://code.google.com/p/range-seek-bar/)是作爲'ImageView'的子類實現的,用於處理需要兩個拇指而不是一個的情況。 – CommonsWare
正如上面所說的所有,可以實現我實現自己的自定義搜索條。
我嘗試了以下方法,它爲我工作。
activity_main.xml中
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity"
android:layout_margin="20dp">
<com.example.customseekbar.CustomSeekBar
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="100"
android:progress="50"
android:progressDrawable="@android:color/transparent"
android:id="@+id/customSeekBar"
/>
</RelativeLayout>
MainActivity.java
package com.example.customseekbar;
import com.example.suricustomseekbar.R;
import android.app.Activity;
import android.os.Bundle;
import android.widget.SeekBar;
public class MainActivity extends Activity {
SeekBar mseekBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mseekBar = (SeekBar) findViewById(R.id.customSeekBar);
mseekBar.setProgress(50);
}
}
CustomSeekBar.java
package com.example.customseekbar;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Rect;
import android.util.AttributeSet;
import android.widget.SeekBar;
public class CustomSeekBar extends SeekBar {
private Rect rect;
private Paint paint ;
private int seekbar_height;
public CustomSeekBar(Context context) {
super(context);
}
public CustomSeekBar(Context context, AttributeSet attrs) {
super(context, attrs);
rect = new Rect();
paint = new Paint();
seekbar_height = 6;
}
public CustomSeekBar(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
@Override
protected synchronized void onDraw(Canvas canvas) {
rect.set(0 + getThumbOffset(),
(getHeight()/2) - (seekbar_height/2),
getWidth()- getThumbOffset(),
(getHeight()/2) + (seekbar_height/2));
paint.setColor(Color.GRAY);
canvas.drawRect(rect, paint);
if (this.getProgress() > 50) {
rect.set(getWidth()/2,
(getHeight()/2) - (seekbar_height/2),
getWidth()/2 + (getWidth()/100) * (getProgress() - 50),
getHeight()/2 + (seekbar_height/2));
paint.setColor(Color.CYAN);
canvas.drawRect(rect, paint);
}
if (this.getProgress() < 50) {
rect.set(getWidth()/2 - ((getWidth()/100) * (50 - getProgress())),
(getHeight()/2) - (seekbar_height/2),
getWidth()/2,
getHeight()/2 + (seekbar_height/2));
paint.setColor(Color.CYAN);
canvas.drawRect(rect, paint);
}
super.onDraw(canvas);
}
}
- 1. Android自定義SeekBar有兩個值
- 2. 將seekbar值設置爲值
- 3. 具有兩個值(最小值和最大值)範圍的Seekbar
- 4. Capture SeekBar值
- 5. seekbar內值
- 6. 使用SeekBar與兩個大拇指
- 7. SeekBar NO初始值
- 8. 方法onStartTrackingTouch和seekbar的getProgress()。第一個值始終爲0.
- 9. Make Seekbar遵循MPAndroidChart X值
- 10. 顯示以前的值seekbar
- 11. Arduino - Android通訊SeekBar值
- 12. Android SeekBar mark在哪裏值
- 13. Seekbar改變int的值
- 14. 含十進制值的SeekBar
- 15. 如何設置第一個Seekbar過程值是分配Android中第二個Seekbar的初始值?
- 16. 爲JAVA_HOME獲取兩個值
- 17. 如何在SeekBar拇指內顯示Android SeekBar progressChanged值?
- 18. MotionEvent.ACTION_UP事件使用seekbar觸發兩次
- 19. 同時播放兩個mediaplayer對象使用seekbar調整音量爲
- 20. bash腳本平均值爲兩個值
- 21. 垂直seekbar行爲異常
- 22. Android:更改SeekBar行爲
- 23. Android SeekBar奇怪的行爲
- 24. 滑動1 seekbar導致兩個Seekbars改變大拇指
- 25. Android:同時處理兩個seekBar的多點觸控事件
- 26. 自定義Seekbar帶有兩個可繪製的遮罩效果?
- 27. 在Android中使用兩個拇指自定義SeekBar
- 28. 「不能投射到」與兩個圖像和seekbar的錯誤
- 29. 範圍SeekBar與兩個拇指不工作
- 30. 使用seekbar在兩個drawable之間轉換
這個!非常好!我發現拇指有點大,但這是可以調整的,也很容易改變顏色的左側和右側。 setNormalizedValue設置爲-1時,遇到困難時,它始終始終在左側,當設置爲1時,它始終在右側開始。無法將其設置爲居中 – CularBytes
解決方案:值介於0和1之間,其中以0.5爲中心。 – CularBytes
是否可以將此自定義搜索欄設置爲垂直? – filipst