2016-04-19 38 views
0

Ich möchte einen Schieberegler erstellen, der dem Benutzer die Möglichkeit gibt, Zahlen in einem Bereich von -24 bis 24 mit 0,5 Schritten auszuwählen. Also entschied ich mich, einen Schieberegler zu erstellen, dessen Daumen sich in der Mitte befindet und der sowohl auf der linken als auch auf der rechten Seite verschoben werden kann. Hier ist das Bild von dem, was ich anvisiere: Schieberegler zum Wählen von Zahlen zwischen -24 und 24 mit 0,5 Schritt

Wenn Benutzer den Schieberegler nach links bewegt, setzt er negative Zahlen. Ähnlich, wenn der Benutzer es nach rechts bewegt, setzt es positive Zahlen.

Wie kann ich das erreichen? Gibt es einen anderen besseren Weg, um einem Benutzer solche Fähigkeiten zu geben?

Antwort

0

Die zweite Frage ist eine Frage des Geschmacks, glaube ich.

Zur Implementierung des Schiebereglers können Sie SeekBar verwenden. Da Sie eine Schrittweite von 0,5 und einen Bereich von 48 haben, erhalten Sie 96 diskrete Punkte. Stellen Sie das Maximum als 96 in SeekBar ein. Implementieren Sie onProcessChanged entsprechend und Sie sind gut zu gehen. Siehe Beispiel-Code als Referenz:

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:text="-24" 
    android:id="@+id/textView2" 
    android:layout_gravity="center_vertical" /> 

<SeekBar 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/seekBar" 
    android:layout_gravity="center_vertical" 
    android:layout_weight="1" 
    android:max="96" 
    android:indeterminate="false" /> 

<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:text="24" 
    android:id="@+id/textView3" 
    android:layout_gravity="center_vertical" /> 

Und hier wird die Suchleiste ändern Hörer:

public class MainActivity extends AppCompatActivity { 

    private TextView mTextView; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     SeekBar bar = (SeekBar)this.findViewById(R.id.seekBar); 
     mTextView = ((TextView)MainActivity.this.findViewById(R.id.textView)); 
     bar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { 
      @Override 
      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { 
       float value = -24 + (progress/2.0f); 
       MainActivity.this.mTextView.setText(String.format("%.1f", value)); 
      } 
     }); 
    } 
}