用户点击它时重新关注EditText

时间:2015-10-10 02:23:45

标签: android android-edittext focus

我有一些EditText的活动,我希望EditText:on活动启动之一的以下行为,EditText填充了一些文本。它不应该显示光标,没有焦点而不显示键盘(因此用户只需阅读文本并向上和向下滚动)。然后,当用户单击/触摸EditText时,它将获得焦点,显示光标和显示键盘(因此用户可以开始编辑)。

启动时的行为正常,但是当用户点击EditText时,我无法使“开始编辑”行为正常工作。

这是我的代码:

activity_main.xml中:     ...     

    ...

    <EditText
        android:id="@+id/notepad"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="0.5"
        android:background="@android:color/transparent"
        android:textSize="@dimen/font_large"
        android:textStyle="normal"
        android:textColor="@color/appPrimaryText"
        android:textColorHint="@color/appAccentColour"
        android:gravity="top"
        android:scrollbars="vertical"        />

        ...

    <View
        android:layout_width="match_parent"
        android:layout_height="@dimen/activity_margin"></View>
</LinearLayout>

MainActivity.java:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mNoteEditText = (EditText) findViewById(R.id.notepad);
    final MainActivity mainActivity = this;
    mNoteEditText.setFocusable(false);
    mNoteEditText.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            showToastMessage("here", false);
            mNoteEditText.setFocusable(true);
            mNoteEditText.requestFocus();
            mNoteEditText.setCursorVisible(true);
            showKeyboard(mNoteEditText);
        }
    });
}

public void showKeyboard(EditText editText) {
    InputMethodManager inputMethodManager =
            (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);

    inputMethodManager.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}

活动的清单条目是:

    <activity
        android:name=".ui.MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleTask"
        android:windowSoftInputMode="stateAlwaysHidden|adjustPan" >
        <!--Main launcher.-->
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

问题是,onClick方法正在触发(我可以看到吐司),但其他行对EditText(mNoteEditText)没有影响。

感谢。

0 个答案:

没有答案