Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android: dos problemas con Tablerow + TextView en Tablelayout

Estoy usando Tablerow + TextView para hacer una vista simple para las entradas del blog y sus respuestas. En cada TableRow pongo un TextView. Ahora tengo dos problemas:

  1. El texto que es más largo que la pantalla no se envuelve automáticamente para ser multi-line. ¿Es por diseño de TableRow? Ya he establecido tr_content.setSingleLine(false); [Update] Esto se ha tratado, creo que debería cambiar Fill_parent para ser Wrap_content en textView. tr_author_time.setLayoutParams(new LayoutParams( LayoutParams.**WRAP_CONTENT**, LayoutParams.WRAP_CONTENT));

  2. Android - ¿Es posible desactivar el botón de clic de inicio
  3. OnClickListener de Child que impide el golpe de vista de Android ViewPager
  4. Detectar si TextView abarca más de 2 líneas
  5. Cómo cambiar el valor de NumberPicker con animación?
  6. Android path to array - lee los puntos de una ruta?
  7. Cómo obtener la cadena de ruta de android a un archivo en la carpeta de activos?
  8. La tabla no se desplazará como ListView. Mis filas son más que el tamaño de la pantalla. Espero que la tabla se puede desplazar hacia abajo para ver como ListView. ¿Es eso posible?

Aquí está mi código:

  TableLayout tl = (TableLayout) findViewById(R.id.article_content_table); TextView tr_title = new TextView(this); TextView tr_author_time = new TextView(this); TextView tr_content = new TextView(this); TableRow tr = new TableRow(this); for(int i = 0; i < BlogPost.size(); i++){ try{ // add the author, time tr = new TableRow(this); /////////////////add author+time row BlogPost article = mBlogPost.get(i); tr_author_time = new TextView(this); tr_author_time.setText(article.author+"("+ article.post_time+")"); tr_author_time.setTextColor(getResources().getColor(R.color.black)); tr_author_time.setGravity(0x03); tr_author_time.setLayoutParams(new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); tr.addView(tr_author_time); tl.addView(tr,new TableLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); ////////////////////// then add content row tr = new TableRow(this); tr_content = new TextView(this); tr_content.setText(article.content); tr_content.setSingleLine(false); tr_content.setGravity(0x03); tr_content.setLayoutParams(new LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); tr.addView(tr_content); tr.setBackgroundResource(R.color.white); tl.addView(tr,new TableLayout.LayoutParams( LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); } 

  • La clave debe ser un identificador de recurso específico de la aplicación
  • Cómo configurar los certificados SSL con Charles Web Proxy y el último emulador de Android en Windows?
  • Cómo ocultar la barra de título de una actividad en XML con el tema personalizado existente
  • ¿Cómo usar el almacenamiento en caché sin conexión universal del cargador de imágenes?
  • Android 4.4 errores api http?
  • ¿Es posible usar las pestañas AND de desplegable como navegación en la barra de acción?
  • 3 Solutions collect form web for “Android: dos problemas con Tablerow + TextView en Tablelayout”

    Esto no es realmente una respuesta completa, pero realmente parece que estás haciendo esto de la manera difícil.

    En lugar de construir tus TableRows manualmente, deberías configurarlos en xml como este:

    Tablerow.xml:

     <TableRow xmlns:android="http://schemas.android.com/apk/res/android"> <TextView android:id="@+id/content" android:singleLine="false" android:textAppearance="@style/someappearance" /> </TableRow> 

    Antes de su bucle, obtenga una referencia a un LayoutInflater:

     LayoutInflater inflater = getLayoutInflater(); 

    Luego, dentro de su bucle, cree una instancia de tablerow usando LayoutInflater:

     TableRow row = (TableRow)inflater.inflate(R.layout.tablerow, tl, false); TextView content = (TextView)row.findViewById(R.id.content); content.setText("this is the content"); tl.addView(row); 

    Esto le permitirá configurar su diseño, apariencia, params de diseño en xml lo que hace mucho más fácil de leer y depurar.

    Para el problema de desplazamiento, tendrá que agregar su TableLayout a ScrollView. Algo así en tu xml:

     <ScrollView> <TableLayout android:id="@+id/arcitle_content_table" /> </ScrollView> 

    Una cosa más apropiada a hacer para envolver los artículos habría sido añadir android: shrinkColumns = "*" o android: shrinkColumns = "1" a la TableLayout, esto probablemente habría arreglado el problema de envoltura.

    Para detalles

    Para ajustar el texto en las filas de la tabla:

    De forma predeterminada, las filas TableLayout se ajustan a la anchura de su contenido, sin importar que pase por encima de los límites de la pantalla. Para que las celdas de texto de mayor tamaño que la pantalla se envuelvan en varias líneas, utilice el atributo android:shrinkColumns en TableLayout.

     <TableLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:shrinkColumns="*" /> 

    android:shrinkColumns es un índice basado en cero de las columnas para reducir. Elimina el espacio extra innecesario de una columna y lo encoge:

    • android:shrinkColumns="*" encoge todas las columnas
    • android:shrinkColumns="0" encoge la primera columna
    • android:shrinkColumns="1,2" encoge la segunda y tercera columnas

    android:stretchColumns hace lo contrario. Extiende una columna al ancho máximo disponible.

    Tanto "encogimiento" como "estiramiento" consideran todas las filas de la tabla para calcular el espacio.

    Para desplazarse por un TableLayout:

    Si su TableLayout es mayor que la pantalla, TableLayout en ScrollView .

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.