Intereting Posts
В библиотеке MPAndroidChart, как переносить метки X Axis на две строки, если они долго? Сделать строковый текст Жирным шрифтом в Java Android Логика для использования нескольких веб-просмотров в TabLayout для решения проблемы памяти Размещение элементов управления масштабированием в MapView Изображение размыто на другом устройстве Unity3D Android-акселерометр и гироскопы ОШИБКА: Не удалось прочитать ключ из хранилища: … Не удается восстановить ключ в Android Studio при создании подписанного APK Различия между классами ItemizedOverlay и Overlay Андроид Получение видеопотока IP Cam на Android (MJEPG) Создайте новый TextView программно, затем отобразите его под другим TextView Размер приложения corona sdk слишком велик После нажатия кнопки «Домой» повторное запуск приложения показывает начальную активность не текущей Доступ запрещен с использованием локального хранилища в Android WebView Как работает TranslateAnimation android?

Добавление пространства между столбцами таблицыLayout

У меня есть TableLayout, где я динамически добавляю TableRows. В каждом TableRow я добавляю кнопку.

Я просто хотел бы добавить некоторое пространство между моими столбцами (которые являются моими кнопками), но я не могу понять, как … Я попытался изменить все возможные поля, но он не работает 🙁 Так что, возможно, я сделал Ошибка в моем коде, где я раздуваю их из файлов XML:

private void createButtons(final CategoryBean parentCategory) { final List<CategoryBean> categoryList = parentCategory.getCategoryList(); title.setText(parentCategory.getTitle()); // TODO à revoir int i = 0; TableRow tr = null; Set<TableRow> trList = new LinkedHashSet<TableRow>(); for (final CategoryBean category : categoryList) { TextView button = (TextView) inflater.inflate(R.layout.button_table_row_category, null); button.setText(category.getTitle()); if (i % 2 == 0) { tr = (TableRow) inflater.inflate(R.layout.table_row_category, null); tr.addView(button); } else { tr.addView(button); } trList.add(tr); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { CategoryBean firstChild = category.getCategoryList() != null && !category.getCategoryList().isEmpty() ? category .getCategoryList().get(0) : null; if (firstChild != null && firstChild instanceof QuestionsBean) { Intent intent = new Intent(CategoryActivity.this, QuestionsActivity.class); intent.putExtra(MainActivity.CATEGORY, category); startActivityForResult(intent, VisiteActivity.QUESTION_LIST_RETURN_CODE); } else { Intent intent = new Intent(CategoryActivity.this, CategoryActivity.class); intent.putExtra(MainActivity.CATEGORY, category); startActivityForResult(intent, VisiteActivity.CATEGORY_RETURN_CODE); } } }); i++; } for (TableRow tableRow : trList) { categoryLaout.addView(tableRow); } } 

Моя кнопка_table_row_category.xml:

 <?xml version="1.0" encoding="utf-8"?> <TextView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/buttonTableRowCategory" style="@style/ButtonsTableRowCategory" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:text="@string/validate" /> 

My table_row_category.xml:

 <?xml version="1.0" encoding="utf-8"?> <TableRow xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/tableRowCategory" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="100dp" android:gravity="center" android:padding="5dp" > </TableRow> 

Спасибо за помощь.

Solutions Collecting From Web of "Добавление пространства между столбцами таблицыLayout"

В случае TableLayout самими кнопками являются столбцы. Это означает, что вам нужно советовать кнопкам удерживать пространство между ними. Вы можете сделать это, используя параметры макета. Их гораздо проще установить в XML, но он также работает программно. Важно, чтобы вы всегда использовали класс LayoutParam родительского макета элемента, в который вы его применили, – в этом случае родительский элемент – TableRow:

 // Within createButtons(): android.widget.TableRow.LayoutParams p = new android.widget.TableRow.LayoutParams(); p.rightMargin = DisplayHelper.dpToPixel(10, getContext()); // right-margin = 10dp button.setLayoutParams(p); // DisplayHelper: private static Float scale; public static int dpToPixel(int dp, Context context) { if (scale == null) scale = context.getResources().getDisplayMetrics().density; return (int) ((float) dp * scale); } 

Большинство атрибутов измерения в Android берут пиксели, если вы их программным образом устанавливаете, поэтому вы должны использовать что-то вроде моего метода dpToPixel (). Пожалуйста, не используйте значения пикселей в Android! Вы пожалеете об этом позже.

Если вы не хотите, чтобы самая правая кнопка имела этот запас, просто проверьте с помощью IF и не добавьте LayoutParam на него.


Решение в XML:

Чтобы избежать того, чтобы LayoutInflater стирал ваши XML-определенные атрибуты, делайте это при раздувании (взятые из параметров Layout загруженного представления игнорируются ):

 View view = inflater.inflate( R.layout.item /* resource id */, MyView.this /* parent */, false /*attachToRoot*/); 

Альтернатива : используйте GridView, например: Android: простой GridView, который отображает текст в сетках

Add Padding Right для компонента в компоненте строки таблицы

 <TableRow android:id="@+id/tableRow1"> <TextView android:id="@+id/textView1" android:paddingRight="20dp" /> </TableRow> 

Попробуйте использовать функцию TableLayout в TableLayout . Дайте ему индекс columnn и установите для его растяжимого свойства значение true.

Например. Если у вас 3 столбца.

 TableLayout tblLayout; tblLayout.setColumnStretchable(0, true); tblLayout.setColumnStretchable(1, true); tblLayout.setColumnStretchable(2, true); 

Вышеуказанное даст вам равное расстояние между всеми 3 столбцами tableLayout .

Попробуйте android:layout_marginRight="6dp" это сработало для меня.