我有一个EditText字段,用户可以在其中输入清单位置。如果该位置无效,则会显示错误说明(即“找不到位置”),然后用户必须再次按该字段以尝试其他位置。
我正在尝试使用RequestFocus(),以便用户在进入另一个位置之前不需要再次按。它出现正常工作。 EditText字段带有下划线,并且光标在其开头闪烁,但是不能键入任何内容。好像该字段被禁用,但是debug显示它既已启用又具有HasFocus。实际上,它是唯一启用的EditText。
<EditText
p1:layout_width="150dp"
p1:layout_height="33dp"
p1:layout_below="@id/spnrAreas"
p1:id="@+id/etxtLocation"
p1:layout_toRightOf="@id/lblLocation"
p1:textColor="@color/Black"
p1:inputType="textCapCharacters"
p1:nextFocusDown="@+id/etxtItem" />
{txtErrorMessage.Text = "Location not found";
etxtLocation.Text = "";
etxtLocation.RequestFocus();
return; }
除了RequestFocus()之外,还有没有其他方法可以使程序像按EditText(etxtLocation)一样起作用?
答案 0 :(得分:2)
尝试一下:
etxtLocation.RequestFocus();
InputMethodManager imm = (InputMethodManager) GetSystemService(Context.InputMethodService);
imm.ShowSoftInput(etxtLocation, ShowFlags.Implicit);
答案 1 :(得分:0)
我可以通过将“ etxtLocation.RequestFocus()”移到“ extItem” FocusChange()事件处理程序中来解决此问题,在按Enter键后焦点将移至该处。从那里开始,它的行为符合预期:
void etxtItem_FocusChange(object sender, View.FocusChangeEventArgs e)
{
if (etxtItem.HasFocus)
{
//request focus back to Location if its value was incorrect.
if (String.IsNullOrEmpty(etxtLocation.Text))
{
etxtLocation.RequestFocus();
} } } return;