windowsoftinputmode teclado tapar tapa studio ocultar edittext con adjustresize android android-layout android-edittext android-view android-scrollview

teclado - scrollview android studio



EditText no se puede desplazar dentro de ScrollView (10)

Tengo un ScrollView dentro, que es un EditText que está configurado para desplazarse verticalmente. Pero no se desplaza. En cambio, se desplaza todo el diseño, cada vez que intento desplazarme por EditText . A continuación está el código -

<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>

El EditText con id "newTodoText" está en duda aquí.


Ha configurado "Vista de desplazamiento" para su elemento primario; esto significa que desplaza todo el diseño.

Si desea desplazar un "Editar texto" en particular, debe colocar otra vista de desplazamiento en ese texto de edición.


Solo tiene que reemplazar su <ScrollView ></ScrollView> con este Custom ScrollView como <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; } }


Una forma sencilla de hacerlo se menciona a continuación con una descripción

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; } });


deberías usar la clase NestedScrollView. Esta clase admite el desplazamiento del niño dentro del desplazamiento de los padres. Esta clase puede ser un niño o un padre.

<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>


Use este código Su funcionamiento

en Xml

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

en Pragraming

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; } });


<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" >

Esto hará que todo tu diseño sea desplazable.

Para configurar su edittext scrollable, agregue android:scrollbars="vertical" a su texto de edición

En tu código ya está escrito

<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" >

Elimine el código. Funcionará bien


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; } });


mEdtText1.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent motionEvent) { mScrlMain.requestDisallowInterceptTouchEvent(true); return false; } });

// cambiar escuchar mEdtText1 con su objeto de edición de texto y también cambiar mScrlMain con su objeto de vista de desplazamiento que trabajan definitivamente.


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; } });


  • Ha configurado ScrollView como la mayoría del diseño principal. Esa es la razón por la que se desplaza todo el diseño.
  • Como, en lo que respecta a su EditText, ha usado android:scrollbars = "vertical" que significa que si EditText crece , aparecerá srollBar vertical. Obtendrá la barra de desplazamiento y el efecto de desplazamiento solo si edittext tiene datos lo suficientemente altos ...

Espero que esto ayude...