这只是我正在研究的一个小型测试应用/程序,我计划投入更大的应用程序。
我有一个不可点击或可聚焦的editText。我认为这是唯一的方法,因此它不会通过触摸打开键盘。弹出单击按钮的软键盘,可以编辑编辑文本。我希望editText在单击按钮后立即聚焦(下划线变为蓝色),以便用户知道他们在场中。截至目前,只有当他们开始打字时,下划线才会变为蓝色。我觉得我错过了一些明显的东西。
此外,根据我退出应用程序的方式,有时当我回到它时,当我单击按钮时,按钮本身会获得焦点,并且任何输入都不会出现在editText中。
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="${relativePackage}.${activityClass}" >
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="110dp"
android:onClick="showKeyboard"
android:text="Button" />
<EditText
android:id="@+id/editText1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="37dp"
android:ems="10"
android:clickable="FALSE">
<requestFocus />
</EditText>
</RelativeLayout>
JAVA
package com.example.textfield;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.inputmethod.EditorInfo;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
Button btn;
TextView txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button1);
txt = (TextView) findViewById(R.id.editText1);
txt.setFocusable(false);
txt.setClickable(false);
//txt.setImeOptions(EditorInfo.IME_ACTION_DONE);
}
public void showKeyboard(View v) {
txt.setFocusable(true);
txt.requestFocus();
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);
}
}
答案 0 :(得分:0)
这里有类似的问题,请阅读
https://stackoverflow.com/a/14327901/4555911
所以你的代码应该是这样的
Main_activity.xml
...
android:onClick="Clicked"
/>
...
和MainActivity.java
public class MainActivity extends Activity{
Button btn;
Edittext txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn = (Button) findViewById(R.id.button1);
txt = (EditText) findViewById(R.id.editText1);
//txt.setImeOptions(EditorInfo.IME_ACTION_DONE);
}
public void Clicked(View view)
{
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
//txt.requestfocus();
}
}