当前位置: 首页 > 知识库问答 >
问题:

如何禁用键盘弹出时编辑文本?

呼延钱明
2023-03-14

在我的应用程序中,我所有屏幕的第一个视图是EditText,所以每次我去屏幕时都会弹出屏幕键盘。如何禁用此弹出窗口并在手动单击EditText时启用它???

    eT = (EditText) findViewById(R.id.searchAutoCompleteTextView_feed);

    eT.setOnFocusChangeListener(new OnFocusChangeListener() {

        public void onFocusChange(View v, boolean hasFocus) {

            if(hasFocus){
            InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
            imm.hideSoftInputFromWindow(eT.getWindowToken(), 0);
            }
        }
    });

xml代码:

<ImageView
    android:id="@+id/feedPageLogo"
    android:layout_width="45dp"
    android:layout_height="45dp"
    android:src="@drawable/wic_logo_small" />

<Button
    android:id="@+id/goButton_feed"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:text="@string/go" />

<EditText
    android:id="@+id/searchAutoCompleteTextView_feed"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_toLeftOf="@id/goButton_feed"
    android:layout_toRightOf="@id/feedPageLogo"
    android:hint="@string/search" />

<TextView
    android:id="@+id/feedLabel"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@id/feedPageLogo"
    android:gravity="center_vertical|center_horizontal"
    android:text="@string/feed"
    android:textColor="@color/white" />

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/ButtonsLayout_feed"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" >

    <Button
        android:id="@+id/feedButton_feed"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_margin="0dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:text="@string/feed"
        android:textColor="@color/black" />

    <Button
        android:id="@+id/iWantButton_feed"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_margin="0dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:text="@string/iwant"
        android:textColor="@color/black" />

    <Button
        android:id="@+id/shareButton_feed"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_margin="0dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:text="@string/share"
        android:textColor="@color/black" />

    <Button
        android:id="@+id/profileButton_feed"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_margin="0dp"
        android:layout_weight="1"
        android:background="@color/white"
        android:text="@string/profile"
        android:textColor="@color/black" />
</LinearLayout>

<ListView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/feedListView"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_above="@id/ButtonsLayout_feed"
    android:layout_below="@id/feedLabel"
    android:textSize="15dp" >
</ListView>

第三个视图(EditText)是焦点所在。

共有3个答案

仲孙钊
2023-03-14
     edittext.setShowSoftInputOnFocus(false);

现在您可以使用任何您喜欢的自定义键盘。

云和惬
2023-03-14

您必须在EditText上方创建一个视图,该视图采用“假”焦点:

比如:

<!-- Stop auto focussing the EditText -->
<LinearLayout
    android:layout_width="0dp"
    android:layout_height="0dp"
    android:background="@android:color/transparent"
    android:focusable="true"
    android:focusableInTouchMode="true">
</LinearLayout>

<EditText
    android:id="@+id/searchAutoCompleteTextView_feed"
    android:layout_width="200dp"
    android:layout_height="wrap_content"
    android:inputType="text" />

在本例中,我使用线性布局来请求焦点。希望这有帮助。

这很完美...多亏了Zaggo0

公孙辰龙
2023-03-14

最好的解决方案是在项目清单文件(AndroidManifest.xml)中,在活动构造中添加以下属性

Android:windowSoftInputMode="stateHidden"

例子:

    <activity android:name=".MainActivity" 
              android:windowSoftInputMode="stateHidden" />

描述:

  • 当活动成为用户关注的焦点时,软键盘的状态(无论是隐藏的还是可见的)
  • 对活动主窗口所做的调整——是将其调整得更小,以便为软键盘腾出空间,还是当窗口的一部分被软键盘覆盖时,其内容平移以使当前焦点可见

介绍于:

  • API 3级

链接到文档

注意:此处设置的值(除“stateUnspecified”和“adjustUnspecified”之外)将覆盖主题中设置的值。

 类似资料:
  • 我在做计算器。所以我制作了自己的带有数字和函数的

  • 我有一个编辑文本,我想自己处理输入,所以我不想在我点击它时(或者当选择改变、焦点改变、长时间点击等)软键盘出现。但是,我仍然希望能够选择文本、更改光标位置、复制/过去等。 我曾尝试将Android系统:windowSoftInputMode=“stateAllwayshidden”放入清单中,但似乎效果不大。我还尝试添加以下内容 这会禁用键盘,但也会阻止光标工作。 目前,我基本上是在尝试为键盘可能

  • 我有一个EditText对象输入,我正在动态创建。当我选择EditText对象输入文本时,我只是不想弹出小键盘,因为我制作了不同的按钮并为所有这些按钮设置了OnClickListner-s,它们将执行输入,但当小键盘弹出时,它覆盖了屏幕,我想禁用它,因为我不想让任何人从小键盘输入文本。我只希望他们从我创建的按钮输入值。

  • 我在android studio上开发的项目中有一个。 当我点击编辑文本时,我需要找到一种方法来禁用键盘,这意味着当我点击时,键盘不应该打开。

  • 当EditText具有焦点并且出现软键盘并按下任何键时,我正在尝试清理EditText。我正在使用OnFocus usChangeListener方法来检测EditText何时具有焦点,但我不知道如何在相同的方法中实现键盘事件。 有人能帮我吗?非常感谢。亲切的问候

  • 我有一个自定义背景编辑文本。当他们的键盘打开-屏幕调整显示集中编辑文本,问题是,它削减了我的自定义背景。 什么是最好的方式显示我的编辑文本包括他的敲击白背景时,键盘打开? 我的清单现在是调整设置。