Android:Seekbar改变了表单位置

时间:2015-06-30 15:52:56

标签: android android-xml android-seekbar

我有一个Seekbar,当我触摸搜索栏并更新它的位置时,我的表单将重新定位,看起来似乎是“神奇地”。例如,如果我在滚动表单时搜索栏位于表单的顶部,并且我开始更改搜索栏位置,则整个表单将向上滚动并将搜索栏一致地放在表单的底部。

我在滚动视图中有父窗体。嵌套的内部是一个线性布局,其中包含我的所有相对布局。这是相关的代码。如果需要更多代码,请告诉我。

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>

JAVA:

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

请帮忙!

1 个答案:

答案 0 :(得分:0)

好吧,我似乎对发生的事情留下了一个模糊的线索。我的所有观点都没有“可集中”的观点。因此,当我创建第一个scrollview,并且没有设置控件聚焦时,Android会选择第一个需要焦点的合格控件。这在我的代码中引起了一些奇怪的功能。通过这里的回答在SO上找到它:

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

所以我只是设置我的嵌套LinearLayout:

android:focusableInTouchMode="true"