मुझे तलाश बार के केंद्र में "प्रारंभ बिंदु" रखने की आवश्यकता है।
मैं इस तरह कैसे कर सकता हूं?दो मूल्यों के लिए Seekbar [-50, 0, 50]
उत्तर
मुझे एक ही समस्या का सामना करना पड़ा। सही दिशा को इंगित करने के लिए Commonsware के लिए धन्यवाद। मैंने समाधान प्राप्त करने के लिए code.google.com/p/range-seek-bar द्वारा प्रेरित कक्षा लिखी)।
बीच में शुरू करने के लिए, आप यह है कि अपनी पूरी सीमा के आधे एक मूल्य के साथ setProgress()
कॉल कर सकते हैं।
बीच में SeekBar
शुरू किया है और एक को समाप्त करने के लिए जाने के लिए, आपको SeekBar
के लिए अपने स्वयं के प्रतिस्थापन बना सकते हैं या खोजने की आवश्यकता होगी (यानी, अपने ब्लू लाइन बाईं ओर या बीच में से सही करने के लिए बीच में से चलाता है) किसी और ने ऐसा किया है, क्योंकि यह SeekBar
द्वारा समर्थित नहीं है।
'खुद SeekBa के लिए प्रतिस्थापन आर', आप मीन 'शैली'? – lysenkobv
@lysenkobv: नहीं, मेरा मतलब जावा क्लास है। 'SeekBar', जो 'प्रोग्रेसबार' से प्राप्त होता है, उसे बाएं किनारे पर बार के शुरुआती बिंदु को रखने के लिए डिज़ाइन किया गया है। अगर मैं शैली के माध्यम से बदला जा सकता हूं तो मैं आश्चर्यचकित हूं। मुझे उम्मीद है कि आपको अपना खुद का 'व्यू' बनाना होगा जो इसे संभालता है। उदाहरण के लिए, 'रेंजसेकबार' (https://code.google.com/p/range-seek-bar/) को 'छवि दृश्य' के उप-वर्ग के रूप में कार्यान्वित किया गया था, उस मामले को संभालने के लिए जहां आप एक के बजाय दो अंगूठे चाहते हैं। – CommonsWare
से ऊपर सभी ने कहा, यह मेरी हमारे स्वयं के कस्टम seekbar को लागू करने से प्राप्त किया जा सकता है।
मैंने निम्नलिखित तरीके से प्रयास किया और यह मेरे लिए काम किया।
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. 50/50 पढ़ने/लिखने के लिए समवर्ती संग्रह
- 2. WCSession.sendMessage काम करता है 50/50
- 3. सर्वर 50
- 4. 50 गिट्स
- 5. 50-प्रतिशत नियम
- 6. PHP रैंड() ... सच 50/50 परिणाम प्राप्त करें?
- 7. JSplitPane विभाजन 50% ठीक
- 8. सीएसएस: परिणत: का अनुवाद (-50%, -50%) ग्रंथों blurry
- 9. भाषण संश्लेषण; "50"
- 10. सी #: भंडारण प्रतिशत, 50 या 0.50?
- 11. आईओएस सिम्युलेटर 50% स्केल
- 12. चौड़ाई के लिए 50% कैसे रखें
- 13. ओएसएसटैटस त्रुटि -50?
- 14. कोरियोग्राफर (639): 50 फ्रेम
- 15. 50% इनलाइन ब्लॉक एक दूसरे
- 16. nvarchar (50) बनाम nvarchar (अधिकतम)
- 17. दशमलव मूल्यों के साथ SeekBar
- 18. सॉर्टिंग 50 000 000 संख्या
- 19. अपवाद com.apple.coreaudio.avfaudio कारण: त्रुटि -50
- 20. 50 9 न्यूनतम वर्ण सीमा
- 21. एक्स.50 9 प्रमाण पत्र?
- 22. सीएसएस सीमा-बाएं 50% ऊंचाई
- 23. प्रमाणपत्र विषय X.50 9
- 24. एक्स 50 9 के साथ वसंत-सुरक्षा?
- 25. ALTER कथन: VARCHAR2 (50 CHAR) के बजाय VARCHAR2 (50 BYTE) क्यों?
- 26. एक वर्कर (50) कॉलम अद्वितीय बनाएं
- 27. उद्देश्य-सी दौर संख्या निकटतम 50
- 28. WebClient AsyncUpload प्रगति प्रतिशत हमेशा 50% रिटर्न
- 29. एंड्रॉइड अनुमतियां सुरक्षा स्तर 18 और 50
- 30. जावा एक्स 50 9 सर्टिफिकेट पार्सिंग और
यह! बहुत अच्छा! मुझे अंगूठे को थोड़ा बड़ा लगता है लेकिन यह निश्चित रूप से समायोज्य है, बाएं और दाएं रंग में बदलने के लिए भी बहुत आसान था। केवल सेट नॉर्मलाइज्ड वैल्यू सेट करने में कठिनाई हो रही है, जब -1 पर सेट की जाती है, तो यह बाईं ओर सभी तरह से शुरू होती है, जब 1 पर सेट होती है तो यह दाईं तरफ से सभी तरह से शुरू होती है। इसे केंद्रित – CularBytes
समाधान सेट करने के लिए नहीं मिल सकता है: 0 और 1 के बीच मान, जहां 0.5 केंद्र है। – CularBytes
क्या यह कस्टम खोज बार लंबवत होने के लिए सेट है? – filipst