我有一个EditText作为文本字段,可以在活动的其他个人详细信息中接受电话号码。
在活动启动时,EditText将被禁用,直到用户选择编辑以编辑信息。然后启用它并允许用户在其中键入数字。
用户单击以保存数据后,使用
使EditText无法对焦txtPhone.setFocusable(false);
然后使用onClickListener允许用户单击它并调用它包含的数字。
当用户点击编辑编辑号码时,我正在设置
txtPhone.setFocusable(true);
要允许EditText接收焦点,但它似乎仍然使用onClickListener并且不允许编辑文本,在log cat中发出警告:
TextView does not support text selection. Action mode canceled.
EditText侦听器的代码:
txtPhone.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if(txtPhone.isFocusable()==false)
{
if(txtPhone.getText().length() > 1)
{
// Call number
// Using Toast to show listeners working first
Toast.makeText(getApplicationContext(), "Calling... " + txtPhone.getText().toString(), Toast.LENGTH_LONG).show();
}
}
}
});
EditText xml:
<EditText
android:id="@+id/txtPhone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:enabled="false"
android:hint="Telephone..."
android:inputType="phone"
android:maxLength="11" />
我怎样才能使文本像第一次启动时一样可编辑而忽略听众,但是当不可聚焦时拨打该号码,我似乎无法按需要使其工作
答案 0 :(得分:1)
我无法重现您收到的警告,但是在没有聚焦时按下文本框时无法显示Toast。我确实尝试了以下内容来复制你想要实现的目标。希望我能正确理解你。
<强>的EditText 强>
我使用enabled="false"
而不是focusable="false"
。这将有类似的行为启用为false,但允许onClickListener
txtPhone
触发。
<EditText
android:id="@+id/txtPhone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:focusable="false"
android:hint="Telephone..."
android:inputType="phone"
android:maxLength="11" />
<强>监听强>
由于您没有显示按钮的代码,因此我使用了一个名为btnEdit
的按钮来切换焦点。而不是txtPhone.setFocusable(true);
我使用txtPhone.setFocusableInTouchMode(true);
来正确地使编辑文本可以编辑。
btnEdit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (txtPhone.isFocusable()) {
txtPhone.setFocusable(false);
} else {
txtPhone.setFocusableInTouchMode(true);
}
}
});
txtPhone.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (txtPhone.isFocusable() == false) {
if (txtPhone.getText().length() > 1) {
// Call number
// Using Toast to show listeners working first
Toast.makeText(MainActivity.this, "Calling... " + txtPhone.getText().toString(), Toast.LENGTH_LONG).show();
}
}
}
});
因此,当我第一次开始活动时,txtPhone
不可编辑。当我点击编辑按钮时,txtPhone
变得可编辑,我可以输入数字。最后,我再次点击编辑按钮以禁用txtPhone
,当我按下它时,会出现Toast。