Devo inserire "punto di partenza" al centro della barra di ricerca.
Come posso fare questo?Seekbar per due valori [-50, 0, 50]
risposta
Ho affrontato lo stesso problema. Grazie a Commonsware per indicare la giusta direzione. Ho scritto una lezione ispirata a code.google.com/p/range-seek-bar) per ottenere la soluzione.
Per iniziare nel mezzo, è possibile chiamare setProgress()
con un valore che è la metà della vostra gamma totale.
Per fare in modo che SeekBar
inizi nel mezzo e terminare (ovvero, la linea blu va da metà a sinistra o da metà a destra), è necessario creare il proprio sostituto per SeekBar
o trovare qualcun altro che ha fatto questo, in quanto questo non è supportato da SeekBar
stesso.
'proprio sostituto per SeekBa Sei, per favore? – lysenkobv
@lysenkobv: No, intendo una classe Java. 'SeekBar', come il' ProgressBar' da cui eredita, è progettato per mettere il punto di partenza della barra sul lato sinistro. Sarò piuttosto sorpreso se questo può essere cambiato tramite uno stile. Mi aspetto che tu debba creare il tuo 'View' che gestisca questo. Ad esempio, 'RangeSeekBar' (https://code.google.com/p/range-seek-bar/) è stato implementato come sottoclasse di' ImageView', per gestire il caso in cui si desidera due pollici anziché uno. – CommonsWare
Come Soprattutto Detto questo, si può ottenere la mia implementazione nostra SeekBar personalizzato.
Ho provato nel modo seguente e ha funzionato per me.
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% div, sui click 100% animazione
- 2. PHP rand() ... ottieni risultati 50/50 veri?
- 3. Perché "left: 50%, transform: translateX (-50%)" centra orizzontalmente un elemento?
- 4. max-width 50% per td
- 5. Istruzione ALTER: Perché VARCHAR2 (50 BYTE) anziché VARCHAR2 (50 CHAR)?
- 6. come impostare il bambino due div 50%, 50% con il genitore div
- 7. CSS: trasformare: translate (-50%, -50%) rende testi sfocate
- 8. CSS - il margine superiore del 50% è superiore al 50%
- 9. Errore OSStatus -50?
- 10. C#: memorizzazione delle percentuali, 50 o 0,50?
- 11. Come inserire il 50% per la larghezza
- 12. soffitto a 50 più vicina
- 13. Perché questo valore casuale ha una distribuzione 25/75 anziché 50/50?
- 14. varchar (20) e varchar (50) sono uguali?
- 15. Cosa succede al 1px rimanente quando un div con una larghezza dispari viene diviso 50%/50%?
- 16. Creare una colonna varchar (50) univoca
- 17. JSplitPane che divide il 50% con precisione
- 18. arrotondamento al più vicino 50 centesimi
- 19. espressione Cron ogni 50 secondi in quarzo
- 20. php numero tondo includono zero se .50
- 21. AVAudioPlayer inizializzazione: il codice di errore -50
- 22. SecItemAdd restituire il codice OSStatus -50
- 23. impostare due elementi per bambini con uguale larghezza, ciascuna con il 50% in WPF
- 24. Superamento del limite di 50 in per loop in shopify
- 25. RandomGenerator - Perdita del 50% della simulazione di piani
- 26. Cattura valori SeekBar
- 27. livelli di protezione delle autorizzazioni Android 18 e 50
- 28. 50% in linea-blocchi non visualizzano uno accanto all'altro
- 29. AudioConverter # FillComplexBuffer restituisce -50 e non converte nulla
- 30. Perché "grep -ignore-case" 50 volte più lento?
Questo! molto bella! Trovo il pollice un po 'troppo grande ma che è regolabile naturalmente, inoltre è stato molto facile cambiare colore a sinistra ea destra. Solo avendo difficoltà con l'impostazione di setNormalizedValue, quando è impostato su -1, inizia completamente a sinistra, quando impostato su 1 inizia completamente a destra. impossibile impostare la soluzione centrata su – CularBytes
: valore compreso tra 0 e 1, dove 0.5 è il centro. – CularBytes
È disponibile per impostare questa barra di ricerca personalizzata come verticale? – filipst