Android多状态切换

我想创build这样的滑块在这里输入图像说明

有没有办法在android中定义三个状态滑块? 我是Android开发新手,所以请包含尽可能多的示例代码,这将是非常有帮助的。

Solutions Collecting From Web of "Android多状态切换"

一个简单的例子可以像下面的代码。 你可以玩一点graphics,你会得到你想要的。

布局/ main.xml中

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/TableLayout1" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="10dp" > <include android:id="@+id/tableRow1_ref" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/description" /> <SeekBar android:id="@+id/seekBar1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="10dp" android:layout_marginTop="10dp" android:max="100" /> <include android:id="@+id/tableRow1_ref" android:layout_width="wrap_content" android:layout_height="wrap_content" layout="@layout/description" /> <SeekBar android:id="@+id/seekBar2" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dp" android:max="100" /> </TableLayout> 

布局/ description.xml

 <?xml version="1.0" encoding="utf-8"?> <TableRow xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/tableRow1" android:layout_width="wrap_content" android:layout_height="wrap_content" > <TextView android:id="@+id/textView1" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="left" android:paddingLeft="5dp" android:text="@string/kid" /> <TextView android:id="@+id/textView2" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="center" android:text="@string/adult" /> <TextView android:id="@+id/textView3" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:gravity="right" android:paddingRight="5dp" android:text="@string/senior" /> </TableRow> 

MainActivity.java

 package com.test.Slider; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import android.widget.SeekBar; import android.widget.SeekBar.OnSeekBarChangeListener; public class MainActivity extends ActionBarActivity implements OnSeekBarChangeListener{ SeekBar sb1, sb2; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); sb1 = (SeekBar)findViewById(R.id.seekBar1); sb2 = (SeekBar)findViewById(R.id.seekBar2); sb1.setOnSeekBarChangeListener(this); sb2.setOnSeekBarChangeListener(this); } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { // we don't need it } @Override public void onStartTrackingTouch(SeekBar seekBar) { // we don't need it } @Override public void onStopTrackingTouch(SeekBar seekBar) { int mProgress = seekBar.getProgress(); if(mProgress > 0 & mProgress < 26) { seekBar.setProgress(0); } else if(mProgress > 25 & mProgress < 76) { seekBar.setProgress(50); } else seekBar.setProgress(100); } } 

输出:

滑块的截图

有一个很好的库: android-comboseekbar 。 使用它或看看它是如何工作的。

屏幕 屏幕