android - 无法在 ScrollView 中拖动搜索栏

标签 android scrollview seekbar

如果此问题已在其他地方得到解答,我深表歉意 - 我在 SO 上找不到遇到同样问题的人。

我向位于嵌套 ScrollView 内的 RelativeLayout 添加了一个 SeekBar。但是,我无法拖动搜索栏的拇指。我可以沿着它的路径点击来改变它的值,但我不能拖动它。任何帮助将不胜感激。

我的 XML 看起来像:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/containerView"
android:background="@android:color/transparent"
android:padding="0dip"
android:layout_margin="0dip"
android:layout_width="fill_parent"
android:layout_height="fill_parent">


<ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:scrollbarStyle="insideOverlay"
        android:id="@+id/scrollView" android:layout_alignParentTop="true" android:layout_alignParentLeft="true"
        android:fillViewport="true">
    <HorizontalScrollView
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:scrollbarStyle="insideInset"
            android:id="@+id/horizontalScrollView" android:fillViewport="true">
        <RelativeLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent" android:id="@+id/scrollContainer">
        </RelativeLayout>
    </HorizontalScrollView>
</ScrollView>
</RelativeLayout>

我的 Java 是:

SeekBar thisElement = new SeekBar(getActivity());
thisElement.setEnabled(true);
thisElement.setLayoutParams(lp);
thisElement.setAlpha(alphaVal);
thisElement.setMinimumHeight(elementHeight);
final int min = Integer.parseInt(getJsonPropertyValue(tmpJson, "elementSliderMinimum", "0"));
int max = Integer.parseInt(getJsonPropertyValue(tmpJson, "elementSliderMaximum", "100"));
int def = Integer.parseInt(getJsonPropertyValue(tmpJson, "elementSliderDefault", "50"));
thisElement.setMax(max - min);
thisElement.setProgress(def - min);
thisElement.setTag(elementCounter);
thisElement.setOnTouchListener(new View.OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        String msg = "onTouch:" + v.getClass().toString();
        Log.w("ZZ",msg);
        return false;
    }
});
thisElement.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
    @Override
    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
        String elementSliderAction = getJsonPropertyValue(tmpJson, "elementSliderAction", "");
        if (elementSliderAction.equalsIgnoreCase("changeLabel")) {
            int labelNumber = -1;
            String elementSliderLabel = getJsonPropertyValue(tmpJson, "elementSliderLabel", "");
            for (int j=0; j<childItems.size(); j++) {
                BT_item tmpElement = childItems.get(j);
                if (tmpElement.getItemId().equalsIgnoreCase(elementSliderLabel)) {
                    TextView labelToChange = (TextView)scrollContainer.findViewWithTag(j+1000);
                    String newVal = "" + (progress - min);
                    labelToChange.setText(newVal);
                }
            }
        }
        else if (elementSliderAction.equalsIgnoreCase("saveToPref")) {
            String elementSliderPrefName = getJsonPropertyValue(tmpJson, "elementSliderPrefName", "");
            String newVal = "" + (progress - min);
            setPrefString(elementSliderPrefName, newVal);
        }

    }

    @Override
    public void onStartTrackingTouch(SeekBar seekBar) {

    }

    @Override
    public void onStopTrackingTouch(SeekBar seekBar) {

    }
});
scrollContainer.addView(thisElement);

我怀疑这是因为我的 XML 文件的结构方式,但我不确定正确的解决方案是什么。我偶尔可以让它拖动,但只有在一遍又一遍地尝试之后。此外,当我尝试拖动时,OnTouchListener 正确地将其识别为正在触摸的 SeekBar。

最佳答案

你可以使用下面的代码

thisElement.setOnTouchListener(new OnTouchListener() {
        @Override
        public boolean onTouch(View v, MotionEvent event) {
        scrolview1.setOverScrollMode(ScrollView.OVER_SCROLL_NEVER);
        return false;
    }
});

它会为你工作

关于android - 无法在 ScrollView 中拖动搜索栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23751237/

相关文章:

android - Adview 错误!- 不兼容的类型 : View cannot be converted to Adview

android - java.lang.IndexOutOfBoundsException : Index: 1, 大小:0

ios - 带有 subview Controller 的分页 ScrollView

android - 如何在 Android 中滚动自定义 View

android - android中的谷歌地图,以小尺寸 map View 显示

Android选择微调项进入警报对话框和文本按钮消失

ios - 如何使 ScrollView 在到达最后一张图像后从第一页开始滚动?

Android 多个垂直seekBar

android - 在android中实现简单的SeekBar

android seekbar自定义drawable