setsupportactionbar - manual de programacion android pdf
Android: TextView ocupa espacio sin texto (4)
textview.setVisibility(View.INVISIBLE);
textview.setHeight(0);
Tengo un TextView que aún ocupa espacio cuando no hay texto para mostrar. Esto ocurre solo en OS 1.6. Cuando mi aplicación se ejecuta en 2.2, la altura del TextView se contrae para que no ocupe ningún espacio. ¿Hay alguna propiedad que pueda establecer en TextView para hacer que se colapsen o desaparezcan cuando no se establece ningún texto? Aquí está mi código xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:layout_marginTop="3dp"
android:layout_marginRight="3dp"
android:background="#ff737373"
android:padding="3dp"
android:minWidth="64dp" >
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:tag="tabImage"></ImageView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="16sp"
android:tag="tabCaption"
android:textColor="#ffd9d9d9" />
</LinearLayout>
por lo que estás pidiendo, tienes que usar TextWatcher , y luego cuando el texto está vacío simplemente haz desaparecer TextView:
your_text_view.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void afterTextChanged(Editable s) {
if(your_text_view.getText().toString().equals("")){
your_text_view.setVisibility(View.GONE);
}
}
});
y cada vez que desee cambiar el texto en él, simplemente use your_text_view.setVisibility(View.VISIBLE);
justo antes de configurar el nuevo texto, y si el nuevo texto estará vacío, no se mostrará, ya que desaparecerá antes de que lo notes, y en el caso de que ya sea VISIBLE, esta línea no causará ningún daño o afecto.
solo asegúrate de declarar tu TextView como una variable general para poder usarlo en TextWatcher.
Si desea hacer desaparecer una vista de texto si su texto es null
, utilice android:visibility
o use programáticamente textview.setVisibility(View.INVISIBLE);
o textview.setVisibility(View.GONE);
.
Solo para dar una respuesta más completa. Puede otorgarle a TextView AutoCollapse capacidades comprobando qué texto se muestra cada vez que se lo cambia a través de TextChangedListener
Yo simplemente usaría
.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
}
@Override
public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
if(charSequence.length()>0)
textView.setVisibility(View.VISIBLE);
else textView.setVisibility(View.INVISIBLE);
}
@Override
public void afterTextChanged(Editable editable) {
}
});
y ahora tiene la funcionalidad que estás buscando. No he encontrado muchas cosas en la interfaz de usuario de Android que no tienen un oyente de cambio viable, esto es aplicable para la mayoría de los problemas de agregar funcionalidad a las vistas.