9

我想创建类似这样的滑块: 在此处输入图像描述

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

4

2 回答 2

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>

布局/描述.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);
    }   
}

输出:

滑块的屏幕截图

于 2014-05-27T16:18:54.390 回答
1

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

屏幕 屏幕

于 2014-05-27T17:33:24.513 回答