android – 以编程方式禁用ScrollView?

我想启用ScrollView并通过按钮单击禁用它。
禁用的意思就像是如果ScrollView没有..并启用它返回ScrollView ..
我想要,因为我有一个画廊与文本图像,并在按钮上单击屏幕方向更改,所以在景观文本变得更大..我想要scrollview所以图像不伸展它自己和文本变得不可读。
scrollview.Enabled = false / setVisibility(false)does not make anything .. xml:

<ScrollView 
android:id="@+id/QuranGalleryScrollView" 
android:layout_height="fill_parent" 
android:layout_width="fill_parent">
<Gallery android:id="@+id/Gallery" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
android:scrollbars="horizontal"></Gallery>
</ScrollView>

谢谢

编辑1:我不能使用可见性(走),因为那也将隐藏画廊,我想要的是隐藏的scrollview的效果。当有ScrollView的图像中的图像变成scrollabale,不适合在屏幕上,因此,滚动看到整个图像,我不想禁用/启用一个按钮点击..我试过这个:

((ScrollView)findViewById(R.id.QuranGalleryScrollView)).setOnTouchListener(null);
                        ((ScrollView)findViewById(R.id.QuranGalleryScrollView)).setHorizontalScrollBarEnabled(false);
                        ((ScrollView)findViewById(R.id.QuranGalleryScrollView)).setVerticalScrollBarEnabled(false);
                        ((ScrollView)findViewById(R.id.QuranGalleryScrollView)).setEnabled(false);

但仍然图像库中的图像是可滚动的,不适合屏幕..什么是这个解决方案?

几点开始:

>您无法禁用ScrollView的滚动。您需要扩展到ScrollView并覆盖onTouchEvent方法,以便在匹配某个条件时返回false。
>图库组件水平滚动,不管它是否在一个ScrollView中 – 一个ScrollView只提供垂直滚动(你需要一个Horizo​​ntalScrollView水平滚动)
>你似乎说你有一个图像伸展本身的问题 – 这与ScrollView无关,你可以改变ImageView如何缩放与android:scaleType属性(XML)或setScaleType方法 – 例如ScaleType。 CENTER不会拉伸你的图像,并将它的中心它的原始尺寸

您可以按如下所示修改ScrollView以禁用滚动

class LockableScrollView extends ScrollView {

    ...

    // true if we can scroll (not locked)
    // false if we cannot scroll (locked)
    private boolean mScrollable = true;

    public void setScrollingEnabled(boolean enabled) {
        mScrollable = enabled;
    }

    public boolean isScrollable() {
        return mScrollable;
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        switch (ev.getAction()) {
            case MotionEvent.ACTION_DOWN:
                // if we can scroll pass the event to the superclass
                if (mScrollable) return super.onTouchEvent(ev);
                // only continue to handle the touch event if scrolling enabled
                return mScrollable; // mScrollable is always false at this point
            default:
                return super.onTouchEvent(ev);
        }
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        // Don't do anything with intercepted touch events if 
        // we are not scrollable
        if (!mScrollable) return false;
        else return super.onInterceptTouchEvent(ev);
    }

}

然后你会使用

<com.mypackagename.LockableScrollView 
    android:id="@+id/QuranGalleryScrollView" 
    android:layout_height="fill_parent" 
    android:layout_width="fill_parent">

    <Gallery android:id="@+id/Gallery" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"
        android:scrollbars="horizontal">
    </Gallery>

</com.mypackagename.LockableScrollView>

在你的XML文件(只是改变了ScrollView到你的特殊LockableScrollView)。

然后调用

((LockableScrollView)findViewById(R.id.QuranGalleryScrollView)).setScrollingEnabled(false);

以禁用视图的滚动。

我认为你不仅仅是禁用滚动虽然实现您想要的结果的问题(图库将保持可滚动与上述代码) – 我建议做一些更多的研究三个组件(库, ScrollView,ImageView),看看每个人都有什么属性,以及它的行为。

http://stackoverflow.com/questions/5763304/disable-scrollview-programmatically

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:android – 以编程方式禁用ScrollView?