Muszę umieścić "punkt początkowy" w środku paska wyszukiwania.
Jak mogę to zrobić?Seekbar dla dwóch wartości [-50, 0, 50]
Odpowiedz
Zmierzyłem się z tym samym problemem. Dzięki Commonsware wskazać właściwy kierunek. Napisałem klasę zainspirowaną przez code.google.com/p/range-seek-bar), aby uzyskać rozwiązanie.
rozpocząć się w środku, można zadzwonić setProgress()
o wartości, która jest połowa całkowitego zakresu.
Aby rozpocząć SeekBar
w środku i przejść do końca (tj. Niebieska linia biegnie od środka do lewej lub od środka do prawej), należy utworzyć własny zamiennik dla SeekBar
lub znaleźć ktoś inny, który to zrobił, ponieważ nie jest to obsługiwane przez samą siebie.
'własny zamiennik SeekBa r', ty meen 'style'? – lysenkobv
@lysenkobv: Nie, chodzi mi o klasę Java. "SeekBar", podobnie jak "ProgressBar", z którego pochodzi, jest przeznaczony do umieszczenia punktu początkowego paska na lewej krawędzi. Będę raczej zaskoczony, jeśli da się to zmienić za pomocą stylu. Spodziewam się, że będziesz musiał stworzyć swój własny "widok", który sobie z tym poradzi. Na przykład 'RangeSeekBar' (https://code.google.com/p/range-seek-bar/) został zaimplementowany jako podklasa' ImageView', aby obsłużyć przypadek, w którym chcesz dwa kciuki zamiast jednego. – CommonsWare
Jak Przede wszystkim powiedział, może to zostać osiągnięte mój wdrażania własną niestandardową SeekBar.
Próbowałem w następujący sposób i zadziałało to dla mnie.
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. Jednoczesna kolekcja do 50/50 odczyt/zapis
- 2. 50%/50% div, po kliknięciu 100% animacji
- 3. max-width 50% dla td
- 4. C#: Przechowywanie wartości procentowych, 50 lub 0,50?
- 5. Błąd -50 z AudioUnitRender
- 6. Instrukcja ALTER: Dlaczego VARCHAR2 (50 BYTE) zamiast VARCHAR2 (50 CHAR)?
- 7. CSS - margines górny 50% to więcej niż 50%
- 8. Błąd OSStatus -50?
- 9. sufitowa na piechotę 50
- 10. Jak umieścić 50% szerokości?
- 11. wyjątek com.apple.coreaudio.avfaudio powód: błąd -50
- 12. celem-C okrągły numer dokładnością do 50
- 13. Wykreśl kolumnę varchar (50) unikatową
- 14. SecItemDod zwrócenie kodu OSStatus -50
- 15. android: layout_height 50% rozmiaru ekranu
- 16. SpeechSynthesis; Otrzymuj "pięćdziesiąt" zamiast "50"
- 17. Cron ekspresja co 50 sekund w Quartz
- 18. Przyspieszenie przetwarzania lekki ~ 50 GB plik CSV
- 19. ExtAudioFileRead in iOS z kodem błędu -50
- 20. Dlaczego "grep --ignore-case" 50 razy wolniej?
- 21. tekst staje się rozmazany przy użyciu transformaty (-50%, - 50%), aby wyśrodkować sekcji
- 22. 2-kolumna TableLayout z 50% dokładnie dla każdej kolumny
- 23. Wyświetlanie zdjęć na 50% swojej „rodzimej” rozmiar
- 24. Generalizując monadę, wydajność spada prawie o 50%.
- 25. OSTRZEŻENIE: 997: Niepowodzenie konfiguracji dźwięku, błąd = -50
- 26. Ionic 2 Modal tworzą 50% szerokości
- 27. MySQL: Jak zaktualizować 50% wierszy, losowo wybranych?
- 28. 100% Wysokość div, paski przewijania 50 pikseli poza ekranem z powodu marginesu-góry 50 pikseli. przepełnienie auto
- 29. Tworzenie dwóch warstw LinearLayouts ma 50% powierzchni ekranu bez użycia layout_weight
- 30. Pią 27 lipca 11:50:23 [clientcursormon] mem (MB) res: 3 Virt: 76 odwzorowane: 0
To! bardzo dobrze! Uważam, że kciuk jest trochę duży, ale można go oczywiście regulować, a także bardzo łatwo zmienić kolor na lewy i prawy. Tylko mając trudności z ustawieniem setNormalizedValue, gdy jest ustawiona na -1, zaczyna się całkowicie po lewej stronie, po ustawieniu na 1 zaczyna się całkowicie po prawej stronie. nie można go ustawić w celu ustawienia wyśrodkowanego rozwiązania – CularBytes
: wartość między 0 a 1, gdzie 0,5 to środek. – CularBytes
Czy można ustawić pionowy niestandardowy pasek wyszukiwania? – filipst