Java 忽略EditText设置ClickListener代码以编辑文本
我有一个EditText作为一个文本字段,用于接受活动中的电话号码和其他个人详细信息 在“活动启动”时,EditText将被禁用,直到用户选择“编辑”来编辑信息。然后它被启用,并允许用户在其中键入一个数字 一旦用户单击保存数据,EditText将使用Java 忽略EditText设置ClickListener代码以编辑文本,java,android,onclicklistener,Java,Android,Onclicklistener,我有一个EditText作为一个文本字段,用于接受活动中的电话号码和其他个人详细信息 在“活动启动”时,EditText将被禁用,直到用户选择“编辑”来编辑信息。然后它被启用,并允许用户在其中键入一个数字 一旦用户单击保存数据,EditText将使用 txtPhone.setFocusable(false); 然后,它使用onClickListener允许用户单击它并调用它包含的号码 当用户单击“编辑”编辑号码时,我正在设置 txtPhone.setFocusable(true); 要允许E
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();
}
}
}
});
编辑文本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" />
如何使文本像第一次启动时一样可编辑并忽略侦听器,但当无法聚焦呼叫号码时,我似乎无法使其按预期工作我无法重现您收到的警告,但无法在未聚焦时按文本框显示祝酒词。我确实尝试了以下方法来复制您试图实现的目标。希望我理解正确 EditText 我没有使用
enabled=“false”
而是使用focusable=“false”
。这将具有与启用为false类似的行为,但允许txtPhone
的onClickListener
启动
<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" />
因此,当我第一次启动活动时,
txtPhone
是不可编辑的。当我单击编辑按钮时,txtPhone
将变为可编辑状态,我可以输入数字。最后,我再次单击编辑按钮以禁用txtPhone
,当我按下按钮时,土司出现。我知道您正试图用独特的设计实现一个平滑/圆滑的界面,但使用编辑文本字段和一个只显示call的按钮不是更容易吗?这正是我想要的,非常感谢您的txtPhone.setFocusableInTouchMode(true);是我需要但不知道其用途的部件:D
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();
}
}
}
});