Scrollable EditText внутри ScrollView - PullRequest
       7

Scrollable EditText внутри ScrollView

9 голосов
/ 27 февраля 2012

Я искал все сообщения, относящиеся к этой теме, но все еще не мог найти никакого решения. У меня есть один большой макет, и он прокручивается с помощью ScrollView, и он также имеет EditText с прокруткой. Если я пытаюсь прокрутить текст редактирования, макет начинает прокручиваться. Как я могу это решить?

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ScrollView
        android:id="@+id/lroot"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:fillViewport="true"

         >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:orientation="vertical" >

            <ImageView
                android:id="@+id/img6"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:gravity="right"
                android:onClick="runInfo"
                android:src="@drawable/info_btn" />

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

            <!-- Scrollable EditText -->
            <EditText
                android:id="@+id/EditText01"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:autoLink="all"
                android:background="@drawable/isim_soyisim"
                android:clickable="true"
                android:cursorVisible="true"
                android:gravity="left|top"
                android:scrollbars="vertical"
                android:inputType="textMultiLine"
                android:longClickable="false"
                android:maxLines="5"
                android:singleLine="false"

            />


        </LinearLayout>
    </ScrollView>

</LinearLayout>

Ответы [ 2 ]

7 голосов
/ 11 декабря 2012

Попробуйте это решение

Ссылка

EditText EtOne = (EditText) findViewById(R.id.EditText01);
    EtOne.setOnTouchListener(new OnTouchListener() {
                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    if (v.getId() == R.id.comment1) {
                        v.getParent().requestDisallowInterceptTouchEvent(true);
                        switch (event.getAction() & MotionEvent.ACTION_MASK) {
                        case MotionEvent.ACTION_UP:
                            v.getParent().requestDisallowInterceptTouchEvent(false);
                            break;
                        }
                    }
                    return false;
                }
            });
0 голосов
/ 02 марта 2015
package com.sam.views;

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

public class CustomScrollview extends ScrollView{

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

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

        public CustomScrollview(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:
                    super.onTouchEvent(ev);
                    break;

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

            case MotionEvent.ACTION_CANCEL:
                    super.onTouchEvent(ev);
                    break;

            case MotionEvent.ACTION_UP:
                    return false;

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

        return false;
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        super.onTouchEvent(ev);
         return true;
    }
}
...