Подтвердить что ты не робот

Дискретный поиск в приложении Android?

Я хотел бы создать поисковую панель для Android-приложения, которая позволяет пользователю выбирать значение от -5 до 5 (что соответствует "сильно не согласен" и "сильно согласен" ). Как создать форму поиска с дискретными значениями? или есть лучший виджет пользовательского интерфейса, который я мог бы использовать для этого?

Спасибо.

4b9b3361

Ответ 1

Seekbar отлично работает для дискретных значений. Мы используем Seekbar для дискретных данных, как показано ниже. Чтобы показать, какой элемент выбран, мы просто изменяем шрифт выбранного текстового вида, чтобы он был больше. Вы также можете выделить, изменив цвет фона или что-то в этом роде. Это работает очень хорошо. Вы хотите вызвать setMax (11) в строке поиска, а затем в своем коде вам необходимо соответствующим образом перевести между диапазоном (от 0 до 11) и (от -5 до 5).

 <LinearLayout 
           android:orientation="vertical"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:gravity="center_horizontal">
     <LinearLayout 
           android:orientation="horizontal"
           android:layout_width="fill_parent"
           android:layout_height="wrap_content"
           android:gravity="center_horizontal">
    <TextView android:text="-5"
            android:id="@+id/answerNegative5"
            android:textSize="25sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    <TextView android:text="-4"
            android:id="@+id/answerNegative4"
            android:textSize="25sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    <TextView android:text="-3"
            android:id="@+id/answerNegative3"
            android:textSize="25sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content" />
    .....
  </LinearLayout>

  <SeekBar android:id="@+id/intensitySlider"
                    android:layout_weight="0"
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content" />
</LinearLayout>

Ответ 2

Проверить эту ссылку Если вы хотите реализовать дискретную панель поиска с количеством пробелов без использования сторонней библиотеки, тогда используйте свойство стиля для поиска.

<SeekBar
     android:id="@+id/sb"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:max="10"
     android:thumb="@drawable/ic_location"
     android:theme="@style/Widget.AppCompat.SeekBar.Discrete" />

введите описание изображения здесь

Ответ 3

Я не знаю, в чем проблема, добавьте поисковую панель, имеющую диапазон 0-10. Затем вы можете сопоставить эти значения с -5, если вы выберете -5 из выбранного значения.

ИЗМЕНИТЬ

добавьте android:max="10" в xml definiton, и вы получите фиксированный формат поиска.

Возможно, вам стоит подумать о добавлении текстового представления, чтобы обозначить текущее текстовое представление выбранного значения, такое как: Категорически не согласен. Чтобы обновить это представление, подпишитесь на onProgressChanged event и progress параметр даст вам выбранный номер.

SeekBar s = (SeekBar) findViewById(R.id.SeekBar);
s.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {

                    @Override
                    public void onProgressChanged(SeekBar seekBar,
                            int progress, boolean fromUser) {
                                    }
}

Ответ 4

Надеюсь, этот код поможет вам. Попробуйте это...

 float discrete = 0;
 float start = 0;
 float end = 100;
 float start_pos = 0;
 int start_position = 0;


 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);


     start = -10; //you need to give starting value of SeekBar 
     end = 10; //you need to give end value of SeekBar 
     start_pos = 5; //you need to give starting position value of SeekBar 

     start_position = (int)(((start_pos - start) / (end - start)) * 100);
     discrete = start_pos;
     SeekBar seek = (SeekBar) findViewById(R.id.seekBar1);
     seek.setProgress(start_position);
     seek.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {


         @Override
         public void onStopTrackingTouch(SeekBar seekBar) {
             // TODO Auto-generated method stub 
             Toast.makeText(getBaseContext(), "discrete = " + String.valueOf(discrete), Toast.LENGTH_SHORT).show();
         }


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

         }


         @Override
         public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
             // TODO Auto-generated method stub 
             // To convert it as discrete value 
             float temp = progress;
             float dis = end - start;
             discrete = (start + ((temp / 100) * dis));

         }
     });
 }

Ответ 5

1-й шаг: установите maxVal на 10;

2-й шаг:

@Override
public void onProgressChanged(SeekBar seekBar, int progress,
        boolean fromUser) 
   {
    switch(seekBar.getId())
    {
    case R.id.mySeekBar:
        int prValue = progress - 5;
        editText.setText(String.valueOf(preValue));
        break;
    }
}

Ответ 6

      <SeekBar
                android:id="@+id/seekbar"
                style="@style/SeekBarWithoutSteps"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginLeft="22dp"
                android:layout_marginRight="22dp"
                android:layout_marginTop="@dimen/margin_10"
                android:max="4"
                android:maxHeight="@dimen/margin_5"
                android:minHeight="@dimen/margin_5"
                android:paddingLeft="@dimen/margin_10"
                android:paddingRight="@dimen/margin_10"
                android:progressBackgroundTint="@color/colorGray"
                android:progressTint="@color/colorGreen"
                android:theme="@style/Widget.AppCompat.SeekBar.Discrete"
                android:thumb="@drawable/filled_green"
                android:thumbOffset="15dp" />