LayoutInflater忽略参数?

时间:2010-04-29 15:41:08

标签: android

我有以下表示ImageButton

的xml对象
<?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());

好的所以我注意到它看起来并不像预期的那样,所以我启动Hierarchy Viewere并注意到ImageButton实际上有一个layout_width = FILL_PARENT而不是WRAP_CONTENT,而且layout_gravity也是NONE而且没有填充是看到...

我做错了吗?或者是新的TableRow.LayoutParams()部分可能会出错吗?

3 个答案:

答案 0 :(得分:15)

尝试使用inflate(R.layout.genre_cell, row, false)代替inflate(R.layout.genre_cell, null),看看是否有帮助。有时,当通货膨胀知道膨胀的观点会进入什么样的父母时,通货膨胀效果会更好。

答案 1 :(得分:2)

在将近两天之后,我找到了罪魁祸首:

如果您已经在XML声明中“格式化”了View,我实际上怀疑新的LayoutParams()是个问题... 因此,在将新的LayoutParams()从等式中移开后,我的表将显示得很好......

所以只需使用:

grid.addView(row);

答案 2 :(得分:0)

对于使用数据绑定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)