Android 设置新的宽度和高度后,不会重新绘制视图
我正因为这个问题而自杀,所以我急需帮助 我有一个带有自定义布局的片段,该片段以编程方式填充为线性布局,该线性布局由imageview和textview组成 用户可以动态更改片段的大小,问题就在这里 我在片段视图上设置了onLayoutChange listener,在该视图中,我根据容器的大小更改textview的大小,并且当容器大小更改时,所有内容都已正确设置,但视图本身不会重新绘制,在更改后,我所能看到的是具有旧宽度和高度的旧视图,就像新的宽度和高度一样高度从未应用过 我试图使textview无效,并试图在父视图上调用requestlayout,但没有成功 就好像设置了新视图,但显示了旧视图一样 代码如下:Android 设置新的宽度和高度后,不会重新绘制视图,android,Android,我正因为这个问题而自杀,所以我急需帮助 我有一个带有自定义布局的片段,该片段以编程方式填充为线性布局,该线性布局由imageview和textview组成 用户可以动态更改片段的大小,问题就在这里 我在片段视图上设置了onLayoutChange listener,在该视图中,我根据容器的大小更改textview的大小,并且当容器大小更改时,所有内容都已正确设置,但视图本身不会重新绘制,在更改后,我所能看到的是具有旧宽度和高度的旧视图,就像新的宽度和高度一样高度从未应用过 我试图使textvie
private void GenerateViews(View view) {
for (final Item artikl : listaArtikala) {
LinearLayout l_artikl = new LinearLayout(getActivity());
l_artikl.setPadding(10, 5, 0, 5);
final ImageView img = new ImageView(getActivity());
img.setMinimumWidth(image_width);
img.setMinimumHeight(image_height);
img.setScaleType(ScaleType.FIT_CENTER);
l_artikl.addView(img);
final TextView txv = new TextView(getActivity());
// dummy if to trigger after container size changes.
if(txv_artikl_width > 265)
txv.setWidth(300);
else
txv.setWidth(100);
txv.setWidth(300);
txv.setHeight(txv_artikl_height);
txv.setText(artikl.getName());
txv.setTextSize(15);
txv.setClickable(true);
txv.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);
txv.setBackgroundColor(getResources().getColor(
R.color.LightSteelBlue));
txv.setPadding(5, 0, 10, 5);
l_artikl.addView(txv);
((ViewGroup) view).addView(l_artikl);
}
view.requestLayout();
}
非常感谢您的帮助。在您的if语句之后,您可以重置文本视图的宽度:
if(txv_artikl_width > 265)
txv.setWidth(300);
else
txv.setWidth(100);
txv.setWidth(300);
您可能不想这样做,对吧?我没有使用ActionBar选项卡。我使用的是自定义布局,我用视图填充它,例如,如果我用textview填充它,然后在运行时我更改textview的大小,我将看不到它们的新大小。我将看到它们的旧大小,好像什么也没变。对不起,我想回答另一个问题。我会编辑一下我的答案。哦,我没有看到,但即使没有它,它仍然是一样的。设置了新的宽度,但未使用新参数重新绘制textview:)我还有一个问题。当我从布局中删除所有子视图,然后生成新的子视图时,它们都不显示。布局为空。我尝试了invalidate(),requestLayout()。