2012-08-12 195 views
8

我想創造這樣的滑塊: enter image description hereAndroid的多狀態切換

有沒有在android系統的方式來定義一個三個態滑蓋的?我對android開發很陌生,所以請儘可能多地包含示例代碼,這將非常有幫助。

+0

你有能還解決這個問題?如果是,請發佈您的答案! – Milan 2013-01-22 02:35:32

+0

我認爲你需要的只是一個自定義的RatingBar:http://www.b2creativedesigns.com/ratingbar.php – 2014-05-19 17:48:29

回答

5

一個簡單的例子可以像下面的代碼。你可以玩一點圖形,你會得到你想要的。

佈局/ 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); 
    } 
} 

輸出:

screenshot of sliders

1

有這個好的庫:android-comboseekbar。 使用它或看看它是如何工作的。

屏幕 Screen

+0

雖然這個鏈接可能回答這個問題,但最好在這裏包含答案的基本部分並提供鏈接參考。如果鏈接頁面更改,則僅鏈接答案可能會失效。 - [來自評論](/ review/low-quality-posts/17377976) – 2017-09-19 11:21:21