Android: панель поиска меняет положение формы

У меня есть панель поиска, и когда я касаюсь панели поиска и обновляю ее положение, моя форма меняет положение, казалось бы, «волшебным образом». Например, если панель поиска находится в верхней части моей формы, когда я прокручиваю форму, и я начинаю менять положение панели поиска, вся форма будет прокручиваться обратно вверх, а панель поиска постоянно помещается в нижнюю часть формы.

У меня есть родительская форма в виде прокрутки. Внутри вложен линейный макет со всеми моими относительными макетами внутри него. Вот соответствующий код. Если требуется больше кода, пожалуйста, дайте мне знать.

XML:

                <RelativeLayout
                android:id="@+id/Turns_Box"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/Prev_Box"
                android:layout_margin="5dp"
                >

                <TextView
                    android:id="@+id/Turns_Text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:text="@string/Turns_Text"
                    android:textSize="25sp"
                    android:layout_marginStart="5dp"
                    android:layout_marginLeft="5dp"
                    />

                <SeekBar
                    android:id="@+id/Turns_Value"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/Turns_Text"
                    android:layout_alignParentLeft="true"
                    android:layout_alignParentStart="true"
                    android:layout_marginStart="5dp"
                    android:layout_marginLeft="5dp"
                    android:max="25"
                    />

                <TextView
                    android:id="@+id/Turns_Value_Text"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@id/Turns_Value"
                    android:textSize="20sp"
                    android:layout_marginStart="5dp"
                    android:layout_marginLeft="5dp"
                    android:layout_marginBottom="10dp"
                    />

            </RelativeLayout>

ЯВА:

        // Actual Turns
    SeekBar actualTurnsValue = (SeekBar)findViewById(R.id.Turns_Value);
    turnsValueText = (TextView)findViewById(R.id.Turns_Value_Text);
    turnsValueText.setFocusable(false);
    actualTurnsValue.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
            if (fromUser) {
                turnsValueText.setText(progress + 5 + "  Full Revolutions");
            }
        }

        @Override
        public void onStartTrackingTouch(SeekBar seekBar) {
        }

        @Override
        public void onStopTrackingTouch(SeekBar seekBar) {
            graphicAttributes.setActualTurns(Integer.toString(seekBar.getProgress() + 5));
        }
    });

Пожалуйста помоги!


person Stunna    schedule 30.06.2015    source источник


Ответы (1)


Похоже, я оставил смутное представление о том, что происходит. Во всех моих представлениях не было «фокусируемого» набора. Поэтому, когда я создал свой первый вид прокрутки, и ни один элемент управления не был настроен на фокус, Android выбирает первый подходящий элемент управления, которому нужен фокус. Это вызвало некоторые странные функции в моем коде. Нашел это на SO из ответа здесь:

https://stackoverflow.com/a/9690661/3109213

Поэтому я просто установил для своего вложенного LinearLayout:

android:focusableInTouchMode="true"
person Stunna    schedule 30.06.2015