gpt4 book ai didi

java - edittext 中的值在获得焦点之前不会显示。安卓

转载 作者:搜寻专家 更新时间:2023-10-30 21:13:05 24 4
gpt4 key购买 nike

我正在构建一个基于外部数据获取其布局的应用。布局根据 indata 分成不同的 block 。这些 block 在取景器的帮助下显示。在每个 block 中,暂时有一个或多个“textview”和“edittext”。在鳍状肢的第一页上,所有数据都显示在 TextView 和编辑文本中。但是在 viewflipper 的其他页面上,在编辑文本获得焦点之前,编辑文本中的值不会显示。我不知道为什么。所以要清楚。所有 edittexts 的值实际上都在那里,但在 edittext 获得焦点之前不会显示。在我运行该应用程序的所有设备(模拟器、HTC Desire、HTC Wildfire)上,问题都是一样的。有谁知道如何解决这个问题?

这是生成布局的类:

public class ModuleLayout extends LinearLayout {

public ModuleLayout(Context context, ArrayList<BaseModuleItem> itemList) {
super(context);
TableLayout tempTable = new TableLayout(context);

for (int i = 0; i < itemList.size(); i++)
{
TableRow tempRow = new TableRow(context);
TextView tempTextView = new TextView(context);
tempTextView.setText(itemList.get(i).getName());

EditText tempEditText = new EditText(context);
tempEditText.setText(itemList.get(i).getItemValue());

tempRow.addView(tempTextView);
tempRow.addView(tempEditText);

tempTable.addView(tempRow);
}

tempTable.setColumnStretchable(1, true);
this.addView(tempTable);
}
}

这是实际问题的图片。

左图很好地显示了它的所有值。右图位于取景器中的第二个位置,不显示编辑文本中的值,第一个具有焦点的除外。我还应该提到,在 edittext 获得焦点后,它会继续显示值,即使我在 viewflipper 中跳转到其他 View 然后又返回。

最佳答案

此处显示的布局不在 UI 线程上,这意味着无论您更改什么,在 UI 线程(也称为主线程)更新之前您都看不到任何内容。 UI/主线程是您所有 Activity 运行的线程,因此很容易认为这些东西只是自动更新(因为您之前完成的大部分工作也在 Activity 中的某个地方,我假设)。 onFocusChanged 事件(在编辑文本中单击)将通过自身调用 invalidate() 来更新 UI 线程。如果需要,您可以通过调用 EditText.invalidate() 强制更新它,但通常最好让它在创建后自然更新。在没有看到您的其余代码的情况下,这是我能为您做的最好的,我希望这对您有所帮助:)

关于java - edittext 中的值在获得焦点之前不会显示。安卓,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5897747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com