Intereting Posts
Как запустить бесконечный цикл в Android без замораживания пользовательского интерфейса? Галерея изображений с использованием ViewPager + масштабирование в ImageViews Плохая производительность SQLite на внешнем хранилище в Android Как использовать библиотеку ZXing без установки приложения barcodescanner Как подключиться к WPA_EAP WIFI на Android с 4.3 API Существует ли программный способ определения, имеет ли камера оптический зум? Что происходит с базой данных Sqlite при удалении приложения Вращение ImageView подобно компасу (с «северным полюсом», установленным в другом месте) Можно ли настроить пользовательские заголовки HTTP в WebView Как установить начальную позицию ScrollView? Что лучше, listview или linearlayout в scrollview, когда элементы очень ограничены? Как сохранить список в Android и получить его обратно, когда это необходимо? Как работают оверлеи на базе Android? Как получить таймер с высоким разрешением в собственном коде Android? Текст TextView исчезает при повороте устройства

Android: две проблемы с использованием Tablerow + TextView в Tablelayout

Я использую Tablerow + TextView, чтобы сделать простой просмотр сообщений в блогах и их ответов. В каждом TableRow я помещаю TextView в. Теперь у меня есть две проблемы:

  1. Текст, который длиннее экрана, не будет автоматически завершаться, чтобы быть многострочным. Это по дизайну TableRow? Я уже установил tr_content.setSingleLine(false); [Update] Это исправлено, я думаю, что я должен изменить Fill_parent, чтобы быть Wrap_content в textView. tr_author_time.setLayoutParams(new LayoutParams( LayoutParams.**WRAP_CONTENT**, LayoutParams.WRAP_CONTENT));

  2. Таблица не будет прокручиваться, как ListView. Мои строки больше, чем размер экрана. Я ожидаю, что таблицу можно прокрутить для просмотра, как ListView. Это возможно?

Вот мой код:

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

Solutions Collecting From Web of "Android: две проблемы с использованием Tablerow + TextView в Tablelayout"

На самом деле это не полный ответ, но кажется, что вы делаете это с трудом.

Вместо того, чтобы вручную создавать таблицы TableRows, вы должны установить их в xml следующим образом:

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> 

До вашего цикла, получите ссылку на LayoutInflater:

 LayoutInflater inflater = getLayoutInflater(); 

Затем внутри цикла создайте экземпляр tablerow с помощью 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); 

Это позволит вам настроить макет, внешний вид, параметры макета в xml, что упростит чтение и отладки.

Для проблемы с прокруткой вам нужно добавить TableLayout в ScrollView. Что-то вроде этого в вашем xml:

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

Более подходящей вещью для упаковки элементов было бы добавить android: shrinkColumns = "*" или android: shrinkColumns = "1" в TableLayout, это, вероятно, устранило бы проблему упаковки.

Для деталей

Чтобы обернуть текст в строки таблицы:

По умолчанию таблицы TableLayout соответствуют ширине их содержимого, независимо от того, идет ли речь о границах экрана. Чтобы заставить более широкоэкранные текстовые ячейки переноситься в многострочные, используйте атрибут android:shrinkColumns в TableLayout.

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

android:shrinkColumns – это нулевой индекс столбцов для сжатия. Он удаляет ненужное дополнительное пространство из столбца и сжимает его:

  • android:shrinkColumns="*" сжимает все столбцы
  • android:shrinkColumns="0" сжимает первый столбец
  • android:shrinkColumns="1,2" сжимает второй и третий столбцы

android:stretchColumns делает обратное. Он растягивает столбец до максимальной доступной ширины.

И «сжатие», и «растяжка» рассматривают все строки таблицы для вычисления пространства.

Чтобы прокрутить вниз TableLayout:

Если ваш TableLayout выше экрана, переместите его в ScrollView .