Android EditText没有关注

时间:2015-01-27 22:24:45

标签: android android-layout

这是我的问题,我有一个非常简单的布局,显示2个EditText,一个用于标题,另一个用于描述。这是xml文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent"
              android:weightSum="1">

    <EditText
            android:layout_width="match_parent"
            android:layout_height="63dp"
            android:id="@+id/title_field"
            android:background="#ffffffff"
            android:hint="@string/titleFieldHint"
            android:padding="20dp"
            android:textSize="8.5pt"
            android:maxLines="1"/>

    <View
            android:layout_width="fill_parent"
            android:layout_height="1dp"
            android:background="@android:color/darker_gray"/>

    <EditText
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:id="@+id/description_field"
            android:hint="@string/descriptionHint"
            android:gravity="top"
            android:padding="20dp"
            android:scrollbars="vertical"
            android:textSize="8.5pt"
            android:background="#ffffff"
            android:inputType="textMultiLine"
            android:textIsSelectable="true"
            android:focusableInTouchMode="true" android:layout_weight="1"/>

</LinearLayout>

当我使用此布局开始活动时,键盘显示聚焦title_field,因此我可以编写并单击其他字段(当键盘仍然打开时)并编写说明。但是,如果我隐藏键盘它不会再显示(键盘),除非我点击title_field,所以description_field没有响应,除了title_field支持开箱即用(包括上下文操作栏),而description_field不会让我甚至选择。

我刚开始Android开发,有什么我想念的吗?

5 个答案:

答案 0 :(得分:4)

如果您希望在特定活动开始时使用键盘(如搜索活动),请在清单中使用此代码 -

注意 - 一旦用户登陆活动,它就会弹出键盘......

<application ... >
<activity
    android:windowSoftInputMode="stateVisible" ... >
    ...
</activity>
...

你也可以用你的java文件。使用Java,您可以更好地控制键盘外观。这是代码 -

public void showSoftKeyboard(View view) {
if (view.requestFocus()) {
    InputMethodManager imm = (InputMethodManager)
            getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
    }
}

只需调用方法showSoftKeyboard()弹出键盘!!

希望我帮助你!! 干杯!

Refrence Android Development Article

答案 1 :(得分:2)

取出android:textIsSelectable="true"

OR

编辑:

如果您需要能够将文本作为新编辑文本的一部分使用:

将android:提示改为andoid:text以便能够使用键盘使用文本。但是,如果键盘关闭,它仍然需要返回第一个edittext,然后它将保持打开第二个edtitext。

我将使用高度作为&#34; wrap_content&#34;对于两个edittext框。

<EditText
    ...
    android:text="descriptionHint"
    android:focusableInTouchMode="true"
    android:textIsSelectable="true"
    android:layout_weight="1"/>

答案 2 :(得分:0)

   <EditText
    android:id="@+id/editText1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/startJourneyLinearLayout"
    android:layout_below="@+id/startJourneyLinearLayout"
    android:layout_marginLeft="65dp"
    android:layout_marginTop="28dp"
    android:ems="10" >

    <requestFocus />
</EditText>

答案 3 :(得分:0)

对于聚焦编辑文本,您可以使用代码

private void requestFocus(View view) {
        if (view.requestFocus()) {
            getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
        }
    }

//Function Call
requestFocus(yourEditetxt);

答案 4 :(得分:0)

我在EditText上也遇到了同样的问题,我正在检查许多博客以找到解决此错误的方法,但没有解决方法。

要检查主题部分,我将全屏显示的行设置为默认主题(AppTheme)

style name="AppTheme" parent="@android:style/Theme.Holo.Light.NoActionBar.Fullscreen"

,这会导致在屏幕上加载软键盘时出现问题。 我只是尝试上面的代码,它只是打开的软键盘不起作用,我输入的内容无法在EditText中显示。

我只是将主题从默认更改为该主题,并且可以正常工作。

style name="PhoneActivityTheme" parent="Theme.AppCompat.DayNight"