我有以下表示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()部分可能会出错吗?
答案 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)