Java 基于微调器值设置EditText可见性
我正在尝试创建此对话框: 当微调器设置为自定义值时,文本编辑应自动显示。我正在调用TextView上的View.setVisible,但不会立即计算可见性,而是等待另一个更改,例如添加另一行或设置日期 守则:Java 基于微调器值设置EditText可见性,java,android,android-edittext,android-spinner,android-event,Java,Android,Android Edittext,Android Spinner,Android Event,我正在尝试创建此对话框: 当微调器设置为自定义值时,文本编辑应自动显示。我正在调用TextView上的View.setVisible,但不会立即计算可见性,而是等待另一个更改,例如添加另一行或设置日期 守则: ... customText = (EditText) v.findViewById(R.id.edit_custom_text); adapter.setDropDownViewResource(android.R.layout.simp
...
customText = (EditText) v.findViewById(R.id.edit_custom_text);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
s.setAdapter(adapter);
s.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
SpinnerItem si = (SpinnerItem) adapterView.getItemAtPosition(i);
evt.type = si.eventType;
if (evt.type == EventType.CUSTOM) {
customText.setVisibility(View.VISIBLE);
} else {
customText.setVisibility(View.GONE);
}
}
@Override
public void onNothingSelected(AdapterView<?> adapterView) {
//do nothing
}
});
我在父视图和View.refreshDrawableState上尝试了View.invalidate,但没有成功:/
编辑:上面的代码已通过调试器验证,我还尝试了View.INVISIBLE。视图不会立即刷新,而是在视图发生另一次更改后才刷新。这应该可以工作,是不是您的布局不允许/识别此更改 尝试将其更改为“不可见”而不是“消失”,包括“重要”!在布局xml文件中 如果出于某种原因这样做有效,请尝试以下方法:
customText.getParent().requestLayout(); //possibly the parent of that etc
验证您是否实际到达了代码块 比如,你看这个
s.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView,View selectedItemView, int position, long id) {
if ("YES".equals(s.getSelectedItem().toString().toUpperCase())) {
youredittxt.setVisibility(View.VISIBLE);
} else if ("NO".equals(s.getSelectedItem().toString().toUpperCase())) {
youredittxt.setVisibility(View.INVISIBLE);
}}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
});
作为后续问题,您是否在主UI线程中?因为Android有一些内置的特性和策略,所以只有拥有它的线程才能更改UI。 如果您在同一线程之外,请尝试:
customText.getHandler().post(new Runnable() {
public void run() {
customText.setVisibility(View.VISIBLE);
}
});
希望这有帮助!: 我试过了,但运气不好。您是否认为上面的代码应该可以工作,而问题可能在其他地方?有趣的是,其他的更改,比如更改按钮标签,都是有效的……从您显示的代码来看,它确实应该有效。我能想到的唯一一件事是,如果你的声明,你确定你达到了它?比较正在工作,可以在调试器中看到它吗?没有出现异常?是的,语句已到达,调用了setVisible等。感谢您确保我的方法正确-我将尝试重写活动…您实际上是以错误的方式?它是为实例调用的,而不是为所显示的view@PhotonCriticalFatalError_我不明白,这是什么?是否为微调器如果要显示/隐藏edittext的微调器,请按照问题中给出的示例代码进行回答,至少在OnItemSelectedListener中。
customText.getHandler().post(new Runnable() {
public void run() {
customText.setVisibility(View.VISIBLE);
}
});