标签: android-softkeyboard

如何从片段内隐藏软键盘?

我有一个FragmentActivity使用a ViewPager来提供几个片段.每个都有ListFragment以下布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <LinearLayout
        android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:padding="8dp">
        <ListView android:id="@id/android:list"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent" />

        <EditText android:id="@+id/entertext"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </LinearLayout>
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

启动活动时,软键盘会显示.为了解决这个问题,我在片段中做了以下内容:

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    //Save the container view so we can access the window token
    viewContainer = container;
    //get the input method manager service
    imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
    . . .
}

@Override
public void onStart() {
    super.onStart();

    //Hide the soft keyboard
    imm.hideSoftInputFromWindow(viewContainer.getWindowToken(), …
Run Code Online (Sandbox Code Playgroud)

java android android-softkeyboard android-fragments

80
推荐指数
7
解决办法
9万
查看次数

Android:Dialog中的EditText不会拉起软键盘

所以我有一个似乎常见的问题,就是我的对话框中的EditText在获得焦点时不会显示出来.我已经看过几个解决方法,比如在这个帖子中,这一个这一个(还有更多),但我从来没有见过一个令人满意的解释,为什么这首先发生.

我更倾向于让Android使用自己的EditTexts默认行为,而不是构建我自己的行为,但似乎每个人(在那些线程中)已经接受了Dialogs中EditTexts的默认行为是只给光标而没有键盘.那为什么会这样?

为了记录,这些解决方法似乎都没有对我有用 - 我最接近的是强制键盘出现对话框下面(使用InputMethodManager.toggleSoftKeyboard(*)).我的特殊配置是API15,EditText显示在AlertDialog中ListView的页脚中.设置了EditText android:focusable ="true",onFocusChangeListener 正在接收焦点事件.

编辑:

根据要求,这是我正在使用的特定代码段.我不打算整个布局,但在这个特定的应用程序中,EditText响应于按下对话框上的按钮而出现(类似于动作视图).它包含在RelativeLayout中,默认情况下可见性"已消失":

 <RelativeLayout 
       android:id="@+id/relLay"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_centerVertical="true"
       android:visibility="gone"
       android:layout_marginTop="5dp"
       android:layout_marginBottom="5dp">

        <ImageButton
            android:id="@+id/cancelBut"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:background="@color/transparent"
            android:src="@drawable/cancelButton" 
            android:layout_margin="5dp"/>

        <ImageButton
            android:id="@+id/okBut"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_toLeftOf="@id/cancelBut"
            android:background="@color/transparent"
            android:src="@drawable/okButton"
            android:layout_margin="5dp" />

        <EditText 
            android:id="@+id/editText"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:inputType="text"
            android:focusable="true"
            android:layout_toLeftOf="@id/okBut"/>
   </RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

构建它的代码将relativeLayout的可见性设置为"Visible"(并隐藏其他UI元素).根据我使用EditText的经验,这应该足以在EditText聚焦时拉起键盘.但是,出于某种原因,情况并非如此.我可以在onFocusChangeListener上设置以下内容:

    edit_text.setOnFocusChangeListener(new OnFocusChangeListener() {

            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                // For whatever reason we need to request …
Run Code Online (Sandbox Code Playgroud)

android dialog android-softkeyboard android-edittext

79
推荐指数
6
解决办法
4万
查看次数

有没有办法改变android:windowSoftInputMode值来自java类?

我想用我的标签来windowSoftInputMode为每个标签设置不同的属性.当从一个单独的活动完成对标签的所有处理时,如何从java类访问此属性?

有没有办法从java代码访问这个清单属性?

android android-softkeyboard android-tabhost

76
推荐指数
3
解决办法
5万
查看次数

软键盘上的自动折叠ActionBar SearchView关闭

我目前正在使用ActionBar菜单项在操作栏中显示SearchView.当搜索菜单项被展开时,显示软键盘,这就是我想要的.现在,当用户按下后退按钮关闭软键盘时,我还想在操作栏中折叠SearchView.

我尝试在MenuItem和ActionView上实现以下侦听器OnKeyListener和OnFocusChangeListener.我也尝试在Activity中使用OnBackPressed().以上都没有检测到后退按钮用于关闭软键盘的时间.

有任何想法吗?

我已经实现了OnActionExpandListener来了解SearchView何时可见.

android android-softkeyboard android-actionbar

76
推荐指数
3
解决办法
4万
查看次数

显示对话框的软键盘

我正在显示一个带有edittext视图的对话框.但是,仅当用户按下编辑视图内部时,才会打开软键盘.所以我尝试使用以下代码调用InputMethodManager.

InputMethodManager imm =
 (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(dialogField,0);
Run Code Online (Sandbox Code Playgroud)

dialogField是输入字段.但是,我到底应该这样做呢?我在对话框的onStart()方法中尝试了它,但没有任何反应.我之前也尝试过请求对话框的焦点,但这没有任何改变.

我也试过这段代码

dialogField.setOnFocusChangeListener(new View.OnFocusChangeListener()
{
    public void onFocusChange (View v, boolean hasFocus)
    {
        if (hasFocus)
        {
            Main.log("here");
            dialogInput.getWindow().setSoftInputMode(
              WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
            /*
                InputMethodManager mgr =
                  (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                mgr.showSoftInput(dialogField,0);
            */
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

在两个版本中.但是没有软键盘会出现.Main.log只是一个日志,它向我显示该函数实际被调用.是的,它被称为.

在对话框打开之前,我可以使用SHOW_FORCED标志获取键盘.但是在退出时它不会关闭.而且我只能在显示对话框之前这样做.在任何回调中它也不起作用.

android android-sdk-2.1 android-softkeyboard

70
推荐指数
3
解决办法
3万
查看次数

android:当按下完成键时,软键盘执行操作

我有一个EditText.我想在键入一些文本后,当用户按下softkeybard的Done键时,它应该执行一些搜索操作,我也在按钮点击事件中实现.怎么做...???

android key listener android-softkeyboard

70
推荐指数
2
解决办法
3万
查看次数

Listview中的EditText在Android 4.x上按下时失去焦点

我知道这里有很多类似的问题,但我无法在简单的示例应用程序中使用任何提供的解决方案.

第一次显示软键盘时会出现问题.显示后,只需再次按editText即可进行编辑.

尝试以下方法:

 android:windowSoftInputMode="adjustPan|adjustResize"
Run Code Online (Sandbox Code Playgroud)

这不是解决任何问题.在弹出软键盘后,似乎必须使用此行来调整活动的大小.不幸的是,它也导致任何EditTexts失去焦点.这可能是ListView本身在调整大小过程后获得关注的焦点.所以我尝试了以下解决方法:

 listView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);
Run Code Online (Sandbox Code Playgroud)

这总是导致第一可见的EditTextListView包含获得焦点,这是不可取的.第二行中的第二个EditText应该在按下时获得焦点,这不会发生.此外,如果我最终设法聚焦另一个EditText,然后显示第一个(例如通过按下'Next' softkeyboard),第一个可见的将在键盘被解除后重新获得焦点并且ListView再次调整为其完整大小.

我尝试了其他一些事情,比如拦截onFocusChange()ListView的事件,同时知道它按下了哪个EditText TouchListener.再次请求关注某个EditText也没有取得任何成功.

对于相关项目,使用a ScrollView而不是ListView其他用户建议的选项不是一种选择.

android ontouchlistener android-softkeyboard android-listview android-edittext

63
推荐指数
4
解决办法
3万
查看次数

表情符号(表情符号)视图/键盘布局的实现

我试图弄清楚如何在Facebook应用程序和谷歌Hangouts应用程序上实现表情符号(表情符号)选择.我查看SoftKeyboard了Android API示例中的Demo应用程序,但这些表情符号视图的显示看起来并不像SoftKeyboard.它的外观和行为更像是自定义Dialog视图.有没有人知道这些是如何实现的?

Facebook App

Facebook的

Google Hangouts应用

视频群聊

此外,Unicode是发送表情符号的最佳方式还是有其他选择?我注意到有些Unicode序列\u1F601不会渲染相应的表情符号而是显示为1:

EditText messageInput = (EditText) findViewById(R.id.message_input);
messageInput.getText().append("\u1F601");
Run Code Online (Sandbox Code Playgroud)

android emoticons android-softkeyboard emoji

58
推荐指数
4
解决办法
9万
查看次数

HTML:为什么Android浏览器在键盘中显示"Go"而不是"Next"?

我有一个HTML登录表单,其中包含以下元素(按此顺序):

  • input type=text (用户名输入)
  • input type=password (密码)
  • input type=submit (登录按钮)

当焦点在text input?时,为什么Android浏览器在软键盘中显示"Go"按钮而不是"Next"按钮?这会导致用户因为输入用户名后,用户在键盘(通常是正确的动作)按下右下角按钮,表单将用空密码,这显然是行不通的提交失败很容易登录.[如果我的浏览器设置为记住密码并且密码管理器能够填写密码,则此行为将有意义.但是,这不是这种情况,因为您可以在下面测试自己.]

我想让输入类型文本具有"下一步"按钮和输入类型密码(提交前的最后一个输入)以具有"开始"按钮.

问题表单的一个示例位于https://peda.net/:login(此表单包含用于检测输入的"Enter"键的代码,并阻止提交表单,除非最后一个可见表单输入被聚焦).

你知道这个问题的真正解决方法吗?我知道如果我实现本机应用程序,我会使用android:imeOptions="actionNext"(请参阅如何将Android软键盘"Go"按钮更改为"Next").但是,在这种情况下,它是一个HTML表单和Android默认浏览器.

至少在以下配置中可以看到问题:

  • 在Android 2.3.4上运行的"浏览器"系统应用程序(Cyanogenmod 7)
  • 在Android 4.2.2上运行的"浏览器"系统应用程序(Cyanogenmod 10.1)
  • 在Android 4.3.1上运行的"浏览器"系统应用程序(Cyanogenmod 10.2 M1)
  • 在Android 4.4.2(Cyanogenmod 11.0 M3)上运行的"浏览器"系统应用程序(AOSP浏览器)
  • 在Android 5.5.1(Cyanogenmod 12.1)上运行的"浏览器"系统应用程序(AOSP浏览器)[有箭头图标而不是单词"Go"]
  • 在Android 6.0.1(Cyanogenmod 13.0)上运行的"浏览器"系统应用程序(AOSP浏览器)[有一个箭头图标而不是单词"Go"]

html browser android android-softkeyboard

57
推荐指数
5
解决办法
5万
查看次数

片段启动时显示edittext的键盘

当我的片段开始时,我希望我的edittext成为焦点/让用户开始输入它.我能够通过requestFocus()获得焦点,但我无法让键盘显示出来.

我试过这两个:

edit = (EditText) view.findViewById(R.id.search);
edit.requestFocus();
InputMethodManager imgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imgr.showSoftInput(edit, 0);
Run Code Online (Sandbox Code Playgroud)

edit = (EditText) view.findViewById(R.id.search);
InputMethodManager imgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imgr.showSoftInput(edit, 0);
edit.requestFocus();
Run Code Online (Sandbox Code Playgroud)

如何让键盘显示EditText?

android android-softkeyboard android-edittext

51
推荐指数
5
解决办法
3万
查看次数