当内容适合屏幕时,ScrollView会滚动

时间:2014-05-28 23:32:03

标签: android android-layout

我遇到了一个问题,其中包含ScrollView内容。如果内容并非全部适合屏幕,我希望它滚动。但是,如果一切都合适,我不希望它滚动。

按原样,滚动查看器滚动很多,所有内容都可以在屏幕上滚动。

当所有内容都适合屏幕时,如何让滚动视图不滚动?

<ScrollView android:minWidth="25px" android:minHeight="25px" android:layout_width="match_parent" android:layout_height="fill_parent" android:layout_toRightOf="@id/productImageView" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:id="@+id/detailsScrollView" android:paddingRight="24dp" android:paddingLeft="24dp" android:clipChildren="true" android:fillViewport="true" android:measureAllChildren="true"> <LinearLayout android:orientation="vertical" android:minWidth="25px" android:minHeight="25px" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/linearLayout1" android:paddingTop="24dp" android:paddingBottom="24dp"> <TextView android:textAppearance="?android:attr/textAppearanceLarge" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/patternTitleTextView" /> <TextView android:textAppearance="?android:attr/textAppearanceMedium" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/designerNameTextView" android:textColor="@color/default_gray" /> <TextView android:textAppearance="?android:attr/textAppearanceSmall" android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/descriptionTextView" android:layout_marginTop="12dp" android:layout_weight="1" android:minLines="200" android:scrollbars="none" android:scrollHorizontally="false" android:singleLine="false" android:ellipsize="none" /> </LinearLayout> </ScrollView>

2 个答案:

答案 0 :(得分:0)

您可能需要创建自定义ScrollView:

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.widget.ScrollView;

public class CustomScrollView extends ScrollView {

    private boolean enableScrolling = true;

    public boolean isEnableScrolling() {
        return enableScrolling;
    }

    public void setEnableScrolling(boolean enableScrolling) {
        this.enableScrolling = enableScrolling;
    }

    public CustomScrollView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    public CustomScrollView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomScrollView(Context context) {
        super(context);
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {

        if (isEnableScrolling()) {
            return super.onInterceptTouchEvent(ev);
        } else {
            return false;
        }
    }
}

然后你可以在你的代码中做类似的事情:

CustomScrollView myScrollView = (CustomScrollView) findViewById(R.id.myScroll);
myScrollView.setEnableScrolling(false); // disable scrolling
myScrollView.setEnableScrolling(true); // enable scrolling

当然,您可以自行决定何时需要启用/禁用滚动功能。

答案 1 :(得分:0)

我的案例中的问题是其中一个TextView。

 <TextView
                android:textAppearance="?android:attr/textAppearanceSmall"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:id="@+id/descriptionTextView"
                android:layout_marginTop="12dp"
                android:layout_weight="1"
                android:minLines="200"
                android:scrollbars="none"
                android:scrollHorizontally="false"
                android:singleLine="false"
                android:ellipsize="none" />

我不应该设置minLines或设置layout_weight。删除这两件事之后,scrollview完全按照我的预期进行了操作。