如何通过单击按钮强制关注editText

时间:2015-03-04 23:12:34

标签: android android-edittext

这只是我正在研究的一个小型测试应用/程序,我计划投入更大的应用程序。

我有一个不可点击或可聚焦的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);



      }
    }

1 个答案:

答案 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();

        }
     }