it-swarm.com.de

EditText ist in ScrollView nicht scrollbar

Ich habe ein ScrollView in dem sich ein EditText befindet, das vertikal scrollen soll. Es scrollt aber nicht. Stattdessen scrollt das gesamte Layout. Wann immer ich versuche, das EditText..__ zu scrollen. Unten ist der Code -

<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:layout_width="fill_parent"
Android:layout_height="wrap_content" >
<LinearLayout 
Android:layout_width="fill_parent"
Android:layout_height="wrap_content"
Android:orientation="vertical" >

<TextView
    Android:id="@+id/b1"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_marginTop="39dp"
    Android:text="Title"
    Android:textColor="#3bb9ff"
    Android:textSize="15sp" />

<EditText
    Android:id="@+id/Text1"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content"
    Android:ems="10"
    Android:hint="Title"
    Android:singleLine="true" >

    <requestFocus />

</EditText>

<TextView
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:text="Content"
    Android:layout_marginTop="50dp"
    Android:textColor="#3bb9ff"
    Android:textSize="15sp"
   />


<EditText
    Android:id="@+id/newTodoText"
    Android:layout_width="fill_parent"
    Android:layout_height="match_parent" 
    Android:minLines="2"
    Android:maxLines="7"
     Android:hint="Write something"
     Android:scrollbars = "vertical" >
</EditText>
<Button
    Android:id="@+id/Add"
    Android:layout_width="wrap_content"
    Android:layout_height="wrap_content"
    Android:layout_gravity="center"
    Android:text="Add" />


</LinearLayout>
</ScrollView>

Hier steht der EditText mit der ID "newTodoText" in Frage. 

39
Naddy

Sie müssen nur Ihren <ScrollView ></ScrollView> durch diese benutzerdefinierte ScrollView ersetzen, wie <com.example.VerticalScrollview > </com.example.VerticalScrollview >

package com.example;

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;
    }
}
33
Sandeep
EditText EtOne = (EditText) findViewById(R.id.EditText01);
EtOne.setOnTouchListener(new OnTouchListener() {
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        if (v.getId() == R.id.EditText01) {
            v.getParent().requestDisallowInterceptTouchEvent(true);
            switch (event.getAction() & MotionEvent.ACTION_MASK) {
            case MotionEvent.ACTION_UP:
                v.getParent().requestDisallowInterceptTouchEvent(false);
                break;
            }
        }
        return false;
    }
});
84
Amsheer
mEdtText1.setOnTouchListener(new View.OnTouchListener() { 
            @Override
            public boolean onTouch(View view, MotionEvent motionEvent) {
                mScrlMain.requestDisallowInterceptTouchEvent(true);
                return false;
            }
        });

// change hear mEdtText1 mit Ihrem Textobjekt bearbeiten und auch mScrlMain mit Ihrem Scroll-View-Objekt ändern, damit sie definitiv funktionieren.

15
Dhaval Solanki
<ScrollView xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="fill_parent"
    Android:layout_height="wrap_content" >

Dadurch wird Ihr gesamtes Layout scrollbar.

Zum Einstellen Ihres edittext-Bildlaufs fügen Sie Android:scrollbars="vertical" zu Ihrem edittext hinzu.

In Ihrem Code ist es bereits geschrieben

<EditText
    Android:id="@+id/newTodoText"
    Android:layout_width="fill_parent"
    Android:layout_height="match_parent" 
    Android:minLines="2"
    Android:maxLines="7"
     Android:hint="Write something"
     Android:scrollbars = "vertical" >

Entfernen Sie den Code aus dem Code. Es wird gut funktionieren

4
anjaly

sie sollten die NestedScrollView-Klasse verwenden. Diese Klasse unterstützt untergeordnetes Bildlauf innerhalb des übergeordneten Bildlaufs. Diese Klasse kann ein Kind oder ein Elternteil sein.

<Android.support.v4.widget.NestedScrollView         
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:background="#d6d8d9">
    <LinearLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:orientation="horizontal">
        <TextView
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:maxLines="512"
                Android:text=" your content"/>
        <Android.support.v4.widget.NestedScrollView
            Android:layout_below="@id/ll_button"
            Android:layout_width="match_parent"
            Android:layout_height="300dp"
            Android:background="#d6d8d9">

            <EditText
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content" 
                Android:text="your content"
                Android:maxLines="512"/>    
        </Android.support.v4.widget.NestedScrollView>       
    </LinearLayout>

</Android.support.v4.widget.NestedScrollView> 
2
HungNM2
noteEdit.setMovementMethod(new ScrollingMovementMethod());
    ScrollingMovementMethod.getInstance();


    noteEdit.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View v, MotionEvent event) {

            noteEdit.getParent().requestDisallowInterceptTouchEvent(true);

            return false;
        }


    });
1

Ein einfacher Weg, dies zu tun, wird unten mit einer Beschreibung beschrieben

            myEditText.setOnTouchListener(new View.OnTouchListener() {  //Register a callback to be invoked when a touch event is sent to this view.
            @Override
            public boolean onTouch(View v, MotionEvent event) {     
//Called when a touch event is dispatched to a view. This allows listeners to get a chance to respond before the target view.
                mScrollView.requestDisallowInterceptTouchEvent(true);
                return false;
            }
        });
1
Summved Jain

Verwenden Sie diesen Code seine Arbeit

in XML

Android:singleLine="false"
Android:overScrollMode="always"
Android:scrollbarStyle="insideInset"
Android:scrollbars="vertical"

in der Planung

et_feedback.setOnTouchListener(new View.OnTouchListener() {

            public boolean onTouch(View view, MotionEvent event) {

                if (view.getId() == R.id.et_feedback) {
                    view.getParent().requestDisallowInterceptTouchEvent(true);
                    switch (event.getAction() & MotionEvent.ACTION_MASK) {
                        case MotionEvent.ACTION_UP:
                            view.getParent().requestDisallowInterceptTouchEvent(false);
                            break;
                    }
                }
                return false;
            }
        });
0
Keshav Gera
  • Sie haben ScrollView als übergeordnetes Layout festgelegt. Aus diesem Grund wird Ihr gesamtes Layout gescrollt.
  • Was Ihren EditText betrifft, haben Sie Android:scrollbars = "vertical" verwendet, dh wenn EditText Wächst erscheint eine vertikale srollBar. Sie erhalten die Bildlaufleiste und den Bildlaufeffekt Nur, wenn die Daten in edittext hoch genug sind.

Hoffe das hilft...

0
CRUSADER