Necesita hacer que TextView se desplace verticalmente automáticamente

Estoy tratando de desarrollar una actividad que será parte de una simple aplicación de chat para un proyecto universitario. Quiero tener una configuración donde tengo un EditText y un Button que cuando se presiona toma el texto de EditText y lo agrega al contenido de un TextView en la misma actividad. Eso parece estar funcionando bien para mí hasta ahora, pero también quiero hacerlo de modo que cuando se envía un mensaje para ser mostrado en el TextView si no hay espacio suficiente para mostrar la nueva línea de texto que se desplaza hacia abajo automáticamente.

Esto es lo que mi onCreate() en la actividad parece

 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final EditText edit = (EditText) findViewById(R.id.editText1) ; final Button button = (Button) findViewById(R.id.button1) ; final TextView text = (TextView) findViewById(R.id.textView1) ; //text.setMaxHeight(200); text.setSelected(true); text.setMovementMethod(new ScrollingMovementMethod()); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(edit.getText().length() > 0) { text.append(edit.getText() + "\n") ; edit.setText(""); } } }); } 

Esta es la sección relevante del archivo de diseño XML de la Actividad.

 <TextView android:id="@+id/textView1" android:ellipsize="marquee" android:focusable="false" android:marqueeRepeatLimit="marquee_forever" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="70dp" android:text="" android:scrollbars ="vertical" android:maxLines="10" /> 

¿Qué estoy haciendo mal? O estoy malentendido y es lo que quiero no es posible con una vista de texto?

EDIT: Archivo XML completo

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/button1" style="?android:attr/buttonStyleSmall" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBaseline="@+id/editText1" android:layout_alignBottom="@+id/editText1" android:layout_alignParentRight="true" android:text="@string/okString" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_marginBottom="107dp" android:layout_toLeftOf="@+id/button1" android:ems="10" /> <ScrollView android:id="@+id/scrollView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" > <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="70dp" android:ellipsize="marquee" android:focusable="false" android:marqueeRepeatLimit="marquee_forever" android:maxLines="10" android:scrollbars="vertical" android:text=" " /> </ScrollView> 

3 Solutions collect form web for “Necesita hacer que TextView se desplace verticalmente automáticamente”

No deberías poner el componente verticalmente desplazable dentro de scrollview verticalmente desplazable, y como tu texto es desplazable, no veo por qué necesitas el scrollview en primer lugar. A continuación, puede utilizar text.setScrollY (text.getLayout (). GetHeight ()). No estoy seguro de si funcionará, pero si no lo hace, puede intentar Obtener el tamaño de un texto en TextView

  String text="Im trying to develop an activity that will be part of a simple chat application for a college project. I want to have a setup where I have an EditText and a Button which when pressed takes the " mText = (TextView) findViewById(R.id.textView1); mText.setText(text) mText.setMovementMethod(new ScrollingMovementMethod()) 

XML

  <ScrollView android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@android:color/black" android:text=" " /> 

Nota: Instead of storing your text as normal string save it in HTML format which will add line break in your text.

  String text="Im trying to develop an activity that will<br> be part of a simple chat <br>application for a college project. I want to have a setup where I have an EditText and <br>a Button which when pressed takes the " 

Y luego agregue esta línea al código anterior

  mText.setText(Html.fromHtml(text)); 

Esto devolverá un resultado más apropiado

Suponiendo que ha insertado una etiqueta de cierre </RelativeLayout> en su archivo xml, he probado su código y está funcionando bien en mi final. Intente limpiar el proyecto y reconstruirlo de nuevo desde

 Project -> Clean Project -> Build Project 

EDIT: ¿Puedes intentar esto para el diseño? Tenga en cuenta que he eliminado ScrollView del diseño e insertado la línea text.setMovementMethod(new ScrollingMovementMethod()); de nuevo.

 <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent"> <TextView android:text=" " android:id="@+id/textView1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:scrollbars="vertical" android:maxLines="10"> </TextView> <RelativeLayout android:id="@+id/InnerRelativeLayout" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" > <Button android:text="Button1" android:id="@+id/button1" android:layout_alignParentRight="true" android:layout_width="wrap_content" android:layout_height="wrap_content"> </Button> <EditText android:id="@+id/editText1" android:layout_width="fill_parent" android:layout_toLeftOf="@id/button1" android:layout_height="wrap_content"> </EditText> </RelativeLayout> 

  • Android Html.fromHtml (String) no funciona para <font color = '#'> text </ font>
  • Palabra especial de Higlight en la vista de texto
  • Valor entero en TextView
  • TextView muestra "false" en lugar de texto de recurso
  • Cómo configurar la parte de la vista de texto se puede hacer clic
  • Obtener texto seleccionado de TextView
  • Alineación de la línea de base de dos vistas de texto en Android
  • Evitar que TextView se envuelva en el elemento principal
  • Android sdk 18 La gravedad de TextView no funciona verticalmente
  • TextView de Android y envoltura de texto
  • TextView en android sólo muestra dos líneas de texto en cualquier orientación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.