2014-11-10 1 views
6

Я создаю приложение для Android, где пользователь выбирает максимальное значение с помощью кнопки поиска.Как сделать двойной поиск в андроиде?

Мне нужна еще одна кнопка на том же экране поиска, чтобы пользователь мог выбрать максимальное и минимальное значение из определенного уникального поискового бара.

Вот мой код одной строки поиска -

package com.ui.yogeshblogspot; 

public class CustomSeekBarExActivity extends Activity implements OnSeekBarChangeListener{ 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
SeekBar bar=(SeekBar)findViewById(R.id.seekBar1); 
bar.setOnSeekBarChangeListener(this); 
} 

@Override 
public void onProgressChanged(SeekBar seekBar, int progress, 
     boolean fromUser) { 
    // TODO Auto-generated method stub 
    TextView tv=(TextView)findViewById(R.id.textView2); 
    tv.setText(Integer.toString(progress)+"%"); 

} 

@Override 
public void onStartTrackingTouch(SeekBar seekBar) { 
    // TODO Auto-generated method stub 

} 

@Override 
public void onStopTrackingTouch(SeekBar seekBar) { 
    // TODO Auto-generated method stub 

} 
} 

Вот мой XML-код панели поиска -

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:background="#FFFFFF"> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Choose Your Progress" 
    android:textColor="#000000" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

<SeekBar 
    android:id="@+id/seekBar1" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_gravity="center" 
    android:progressDrawable="@xml/progress" 
    android:max="100" 
    android:thumb="@xml/thumb"/> 

<TextView 
    android:id="@+id/textView2" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="#000000" 
    android:gravity="center" 
    android:layout_gravity="center" 
    android:paddingTop="10dp" 
    android:textAppearance="?android:attr/textAppearanceMedium" /> 

</LinearLayout> 
+0

https://github.com/Larpon/RangeSeekBar проверить этот вид режима – Andy

+0

@Andy БЛАГОДАРЯ это все функции, как я могу добавить этот код активности. Как этот код можно использовать, пожалуйста, помогите мне! –

+0

В библиотеку, которую он опубликовал, входит пример кода. Вы должны это прочитать. –

ответ

10

Библиотека Android класс виджет имеет только один элемент управления слайдер, SeekBar только с одним контролем пальца. Сделал некоторые исследования в Интернете и нашел этот классный пользовательский виджет, диапазон поиска.

вы можете следовали любой из ниже

https://github.com/edmodo/range-bar

https://code.google.com/p/range-seek-bar/

https://github.com/Larpon/RangeSeekBar

+0

@thanks !! ....... –

2

Вам не нужно использовать два SeekBar, но вы можете просто сделать ту же самую функцию минимума и максимума, используя только одну стрелку с двумя большими пальцами над ней. Здесь находится ее библиотека, которую вы можете использовать https://code.google.com/p/range-seek-bar/

Вы можете использовать usin г ниже код

private final Thumb getClosestThumb(float touchX) 

{ 
double xValue = screenToNormalized(touchX);   
return (Math.abs(xValue - normalizedMinValue) < Math.abs(xValue - normalizedMaxValue)) ? Thumb.MIN : Thumb.MAX; 
} 

И в «общественном булевой onTouchEvent (MotionEvent событий)»,

if(pressedThumb == null), 
pressedThumb = getClosestThumb(mDownMotionX); 
+0

спасибо, что это код или библиотеку, пожалуйста, помогите мне подробно, поскольку я новичок в этом .... –

+0

это библиотека для поиска –

9

Полностью настроить два пути и единый путь панели поиска вы можете предоставить большой палец цвет и т.д. http://codingsignals.com/crystal-range-seekbar-in-android/

Добавить в вашем Gradle

dependencies { 
compile 'com.crystal:crystalrangeseekbar:1.0.0' 
} 

Two way seekbar

<com.crystal.crystalrangeseekbar.widgets.BubbleThumbRangeSeekbar 
android:id="@+id/rangeSeekbar5" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
app:corner_radius="10" 
app:min_value="0" 
app:max_value="100" 
app:steps="5" 
app:bar_color="#F7BB88" 
app:bar_highlight_color="#E07416" 
app:left_thumb_image="@drawable/thumb" 
app:right_thumb_image="@drawable/thumb" 
app:left_thumb_image_pressed="@drawable/thumb_pressed" 
app:right_thumb_image_pressed="@drawable/thumb_pressed" 
app:data_type="_integer"/> 
+0

Эта библиотека полезна. Но вы можете рассказать, как установить начальное значение? Я имею в виду, что первоначально оба пункта должны появиться в какой-то момент. –

3

enter image description here

От Here

 <com.appyvet.rangebar.RangeBar 
      xmlns:custom="http://schemas.android.com/apk/res-auto" 
      android:id="@+id/SearchrangeSeekbarAge" 
      android:layout_width="match_parent" 
      android:layout_height="72dp" 
      custom:tickStart="18" 
      custom:tickInterval="1" 
      custom:tickEnd="70" /> 


     <com.appyvet.rangebar.RangeBar 
      xmlns:custom="http://schemas.android.com/apk/res-auto" 
      android:id="@+id/SearchrangeSeekbarHeight" 
      android:layout_width="match_parent" 
      android:layout_height="72dp" 
      custom:tickStart="4.5" 
      custom:tickInterval="0.10" 
      custom:tickEnd="7.0" /> 


rangebar.setOnRangeBarChangeListener(new RangeBar.OnRangeBarChangeListener() { 
     @Override 
     public void onRangeChangeListener(RangeBar rangeBar, int leftPinIndex, 
       int rightPinIndex, 
       String leftPinValue, String rightPinValue) { 
     } 
    }); 
+0

Лучший вариант – blueware