LayoutInflater игнорирует параметры? - PullRequest
4 голосов
/ 29 апреля 2010

У меня есть следующий объект xml, представляющий ImageButton

<?xml version="1.0" encoding="utf-8"?>
<ImageButton
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:id="@+id/genreCellItemId" android:layout_weight="1"
  android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center"
  android:paddingLeft="5.0dip" android:paddingRight="5.0dip">
</ImageButton>

Я пытаюсь надуть его и добавить в TableRow со следующим кодом:

LayoutInflater inflater= this.getLayoutInflater();
TableLayout grid = (TableLayout)findViewById(R.id.bodyTableLayout);
TableRow row = (TableRow)inflater.inflate(R.layout.genre_row, null);
View myButton = (View)inflater.inflate(R.layout.genre_cell, null);
row.addView(tempButton, new TableRow.LayoutParams());
grid.addView(row, new TableLayout.LayoutParams());

Хорошо, поэтому я заметил, что это не выглядело так, как ожидалось, поэтому я запустил средство просмотра иерархии и заметил, что в ImageButton фактически есть layout_width = FILL_PARENT вместо WRAP_CONTENT, также layout_gravity равен NONE, и нет заполнения видел ...

Неужели я неправильно надуваю это? Или, может быть, новая часть TableRow.LayoutParams () делает что-то не так?

Ответы [ 3 ]

16 голосов
/ 29 апреля 2010

Попробуйте использовать inflate(R.layout.genre_cell, row, false) вместо inflate(R.layout.genre_cell, null) и посмотрите, поможет ли это. Иногда инфляция срабатывает лучше, когда она знает, к какому родителю относится инфляционная точка зрения.

2 голосов
/ 04 мая 2010

Через почти два дня я нашел виновника:

Как я и подозревал, новый LayoutParams () является проблемой, если вы уже "отформатировали" свое представление в декларации XML ... Таким образом, после выхода нового LayoutParams () из уравнения моя таблица будет отображаться очень хорошо ...

Так что просто используйте:

grid.addView(row);
0 голосов
/ 13 июня 2019

Для тех, кто использует Связывание данных x Kotlin и сталкивается с этой проблемой:

вместо:

val binding = YourBindingClass.inflate(LayoutInflater.from(parent.context))
return ViewHolder(binding)

используйте это:

val binding = YourBindingClass.inflate(LayoutInflater.from(parent.context), parent, false)
return ViewHolder(binding)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...