ScrollView无法从顶部开始

时间:2013-12-06 06:33:11

标签: android eclipse scrollview android-linearlayout

我创建了一个scrollview,在里面我放置了一个包含图像的LinearLayout文本和一个按钮。不幸的是,当应用程序显示此布局时,scrollview的起始位置位于中间,显示文本而不是顶部,显示图像。

我已经以编程方式尝试了scrollto,但它没有用。我也在XML中尝试过requestfocus,但它没有用。

有什么想法吗?

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/sv"
android:layout_width="fill_parent"
android:layout_height="match_parent" >

<LinearLayout      
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/rregeneratingcream" />

<EditText
android:id="@+id/etDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textMultiLine" 
android:enabled="false"
android:background="#00000000" />        

<Button
android:id="@+id/buttonRegeneration"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Next" />

</LinearLayout>
</ScrollView>

2 个答案:

答案 0 :(得分:1)

试试这个:

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/sv"
android:layout_alignParentTop="true"
android:layout_width="fill_parent"
android:layout_height="match_parent" >

<RelativeLayout      
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher" 
android:layout_alignParentTop="true"/>

<EditText
android:id="@+id/etDescription"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:layout_below="@+id/imageView1"
android:inputType="textMultiLine" 
android:focusable="false"
android:background="#00000000" />        

<Button
android:id="@+id/buttonRegeneration"
android:layout_width="fill_parent"
android:layout_below="@+id/etDescription"
android:layout_height="wrap_content"
android:text="Next" />

</RelativeLayout>
</ScrollView>

如果您需要任何进一步的帮助,请告诉我。

答案 1 :(得分:0)

您可以像这样使用自定义垂直ScrollView:

package com.xyz.utils;

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

public class VerticalScrollview extends ScrollView {

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

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

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

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        final int action = ev.getAction();
        switch (action) {
        case MotionEvent.ACTION_DOWN:
            Log.i("VerticalScrollview",
                    "onInterceptTouchEvent: DOWN super false");
            super.onTouchEvent(ev);
            break;

        case MotionEvent.ACTION_MOVE:
            return false; // redirect MotionEvents to ourself

        case MotionEvent.ACTION_CANCEL:
            Log.i("VerticalScrollview",
                    "onInterceptTouchEvent: CANCEL super false");
            super.onTouchEvent(ev);
            break;

        case MotionEvent.ACTION_UP:
            Log.i("VerticalScrollview", "onInterceptTouchEvent: UP super false");
            return false;

        default:
            Log.i("VerticalScrollview", "onInterceptTouchEvent: " + action);
            break;
        }

        return false;
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        super.onTouchEvent(ev);
        Log.i("VerticalScrollview", "onTouchEvent. action: " + ev.getAction());
        return true;
    }
}