相关疑难解决方法(0)

Android:如何判断软键盘是否显示?

继承人的困境:我正在显示一个屏幕,其中有一个输入字段和一个标签内的2个按钮(共有3个标签,它们位于屏幕的底部).2个按钮设置在屏幕的左下方和右下方,位于选项卡的正上方.当我点击输入字段时,标签和按钮都被推到键盘顶部.

我希望只按下按钮,并将标签保留在原来的位置,在底部.一旦我确定软键盘正在显示,我正在考虑将标签的可见性设置为GONE,并且一旦软键盘消失就可以看到VISIBLE.

是否有某种类型的软键盘监听器,或者输入字段?也许OnFocusChangeListener是编辑文本的一些棘手的用法?如何确定键盘是否可见?

android

20
推荐指数
1
解决办法
2万
查看次数

Android软键盘隐藏按钮

我有一个简单的登录视图,如下所示.

如果任何EditText增益集中,键盘将显示(软).红色虚线应勾勒出这种行为:

键盘

我需要的是,键盘显示时,底部的按钮(注册和帮助)是不可见的.登录按钮的底端应在键盘上,这样既EditTexts Login Button可见.

如果可能,最多应该看到徽标的一半(取决于屏幕尺寸)

如果可能的话,定义一个额外的布局xml,如"键盘可见",这将是完美的.

keyboard android scrollview

19
推荐指数
2
解决办法
1万
查看次数

onConfigurationChanged()没有为keyboardHidden触发

我已经按照这里的各种问题和答案设置我的Android活动来覆盖onConfigurationChanged(),以便在软键盘打开和关闭时执行逻辑.这是我的代码的相关摘录.我把它归结为最简单的场景:

AndroidManifest.xml中

...
<activity 
    android:name=".SearchActivity" 
    android:label="@string/app_name" 
    android:configChanges="keyboard|keyboardHidden|orientation"
/>
...
Run Code Online (Sandbox Code Playgroud)

SearchActivity.java

...
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    Toast.makeText(this, "onConfigurationChanged()", Toast.LENGTH_SHORT).show();
}
...
Run Code Online (Sandbox Code Playgroud)

当我改变方向时,上面的代码将显示Toast,但当软键盘打开或关闭时,什么都不做.我已经测试过通过EditText聚焦打开软键盘,并通过长按菜单按钮手动打开它.也没有onConfigurationChanged()拨打电话.

所以现在的代码似乎可以工作,因为方向更改会触发,但我对软键盘没有任何帮助.有任何想法吗?如果答案是"onConfigurationChanged()没有捕获软键盘事件",那么检测和处理此事件的适当解决方案是什么?

为了防止它相关,我正在测试运行Gingerbread的Droid X.

java xml android

18
推荐指数
1
解决办法
1万
查看次数

AutoCompleteTextView:删除背面的软键盘而不是建议

使用时AutoCompleteTextView,会出现下拉建议列表,软件键盘仍然可见.这是有道理的,因为输入随后的字符以缩小列表通常会更有效.

但是,如果用户想要浏览建议列表,则软件键盘仍处于运转状态时变得非常繁琐(当设备处于横向时,这更是一个问题).如果没有键盘占用屏幕空间,导航列表会容易得多.不幸的是,当您按下后退键时,默认行为会首先删除列表(即使在后退键的软件版本中,它显示的图像显示"按此键将隐藏键盘").

这是一个准系统示例,演示了我在说什么:

public class Main2 extends Activity {
    private static final String[] items = {
            "One",
            "Two",
            "Three",
            "Four",
            "Five"
    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        AutoCompleteTextView actv = new AutoCompleteTextView(this);
        actv.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
        actv.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items));
        actv.setThreshold(1);

        LinearLayout ll = new LinearLayout(this);
        ll.setOrientation(LinearLayout.VERTICAL);
        ll.addView(actv);

        setContentView(ll);
    }
}
Run Code Online (Sandbox Code Playgroud)

除了这是不直观的事实(后面的键提示暗示背压将被发送到键盘),它使得导航AutoCompleteTextView建议非常无聊.

什么是最不具侵入性的方式(例如,onBackPressed()在每个活动中捕获后面并相应地路由它肯定不是理想的)使第一次按下后隐藏键盘,第二次删除建议列表?

keyboard android autocompletetextview android-softkeyboard onbackpressed

17
推荐指数
1
解决办法
5893
查看次数

在键盘出现时隐藏"底部导航栏" - Android

我有一个小的演示聊天UI应用程序.此应用程序有一个底部导航栏.当键盘出现时我需要隐藏底部导航栏.

以下是聊天UI的示例

正如您在EditText元素中单击时所看到的那样,键盘会出现但底部导航栏仍然可见.我尝试过这种测量方法等方法,但UI元素却像这样闪烁.

当键盘可见时,是否有正确的方法隐藏底部导航栏?

编辑: 在下面的活动中,您可以看到我设置键盘监听器的位置,以便在确定键盘可见时调整UI元素的位置.

这是我的活动代码,使用上面链接中的setKeyboardListener方法并在onCreateView中设置它:

package uk.cal.codename.projectnedry.TeamChatFragment;

import android.annotation.SuppressLint;
import android.content.Context;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Rect;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.Layout;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewTreeObserver;
import android.view.Window;
import android.view.WindowManager;
import android.view.inputmethod.InputMethodManager;
import android.widget.Button;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.Toast;

import com.roughike.bottombar.BottomBar;

import java.util.ArrayList;

import …
Run Code Online (Sandbox Code Playgroud)

java xml android android-layout android-softkeyboard

17
推荐指数
6
解决办法
2万
查看次数

AdjustResize with animation

我在清单中使用了android:windowSoftInputMode ="adjustResize"来防止键盘隐藏活动按钮.它可以工作,但是当键盘打开时,我的按钮会向上移动.它有点跳跃,我想知道 - 我可以有任何动画来顺利过渡吗?

<activity
        android:name=".Activity"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="adjustResize">
</activity>
Run Code Online (Sandbox Code Playgroud)

android android-animation android-softkeyboard

13
推荐指数
1
解决办法
3115
查看次数

如何在混合平板电脑中识别硬件与软键盘的使用情况?

问题:

我有一小组大约90个用户非常重要,所以当这些商业客户中的一个或两个希望在他们的网络应用程序中更改UI时,他们通常会获得专用的开发资源.但是,对于我们来说,确切了解整个组织如何使用该应用程序非常重要,因为该组往往对其UI应该如何看起来具有强烈的个人观点,并且他们都以不同方式使用该应用程序.我在识别硬件和软键盘的使用方面遇到了最大麻烦.最理想的是,我正在寻找一个简单的答案,"使用新的Window.TabletMode == true!" 我不认为这个简单的答案存在.

研究:

  • 所以问题检测虚拟键盘与硬件键盘是我看到的唯一一个非常相似的问题,但它将一半的时间集中在使用JavaScript键盘来替换软键盘上,所以答案讨论如何使键盘特定于数字,日期此外,他正在寻找跨浏览器解决方案,我只需要IE11 +支持.最后,我可以依赖于停靠的硬件键盘和特定品牌(戴尔).最后,我可以依赖Windows/IE11,因此与这个3年前的问题相比,可能还有其他途径.我对混合平板电脑的使用也使得能力检查的方法变得毫无用处,因为我已经知道设备上已有的所有功能(触摸等).
  • 我可以检查注册表的UI设置,但我真的需要坚持使用JavaScript或类似的东西.
  • Android有未记录但已知的事件,表明键盘的显示和隐藏.但是,没有用户会使用Android.
  • IE 发生更改时应收到WM_SETTINGCHANGE消息,但我无法确定它是否可用于JavaScript API.我认为这将是一个更具体的信息(如果有的话),所以我找不到任何关于这个搜索词和JavaScript的内容.

码:

来自W3Schools,

window.orientation属性为肖像返回0,为横向视图返回90或-90.

结合window.innerHeight,我可以使用像......

var portrait;

$(window).on("orientationchange",function(event){
  if (event.orientation == 0)
  {
     portrait = true;
  } 
  else //if not, it's landscape
  {
    portrait = false;
  }
});
Run Code Online (Sandbox Code Playgroud)

然后我将window.innerHeight结合使用的值portrait来确定宽高比是否看起来我打开了键盘.考虑到我相当狭窄的约束,这种方法确实可以全屏工作,但是如果浏览器不是全屏的呢?我确信还有很多其他理由不为此编写hacky比率计算.此外,我最大的愿望当然是使用任何浏览器和任何屏幕尺寸.

我可以处理的这些事情:我需要在加载文档时设置变量,并找出确定何时键入变得相关的方法.我可能需要检查一些浏览器功能.也许我会在有和没有硬件键盘的情况下增加计数器的输入.一旦我达到一定数量(比方说5次击键),我就会向我的数据跟踪端点发送一个POST请求,让它知道会话12345使用了软键盘(或硬键盘).之后,我将取消订阅事件处理程序.但是我工作的这部分不太受关注,因为我不认为我会陷入任何困境,但我不希望任何人花时间去美化或开发一个巨大的例子.

环境:

  • 硬件应该都是戴着IE11 +的戴尔平板电脑/笔记本电脑混合动力车(特定型号TBD).我讨厌制作IE特定的东西,但如果它在IE11 +上运行,它是完全可以接受的.
  • 我应该能够提供任何类型的JavaScript库,但请记住,JQuery 2.2和Knockout 2.1已经存在,因此对于使用JQuery的解决方案来说,几乎没有"重量".
  • 我可能无法获得批准编写使用ActiveX或其他需要安装本地应用程序的其他重型定制方法的应用程序,因为我的公司有大约50,000个用户,而对于90个用户的部署将过于复杂.保持. …

javascript browser keyboard tablet screen-orientation

10
推荐指数
1
解决办法
318
查看次数

如何在键盘上方显示我的滚动布局?

我在相对布局中使用了scrollview.

当没有键盘时,我可以在所有手机中滚动到页面的末尾,在某些手机中,我可以在键盘打开时完全查看滚动布局.ie) - 键盘上方滚动视图的结尾.

我分析的问题是因为键盘的类型在不同的Android设备中有所不同.

得到一些答案,在活动清单中添加windowSoftInputMode.

还添加了: android:windowSoftInputMode="stateHidden|adjustResize"

但仍然遇到同样的问题.如果您有解决方案或遇到问题,请分享您的想法.谢谢你的时间.

android scrollview android-layout android-softkeyboard

9
推荐指数
1
解决办法
2889
查看次数

Android:仅在显示键盘时在edittext中显示光标

如何在显示键盘时仅显示EditText的光标.即使EditText未激活且键盘被隐藏,光标也会闪烁,这实在令人讨厌.

这就是我的布局:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/activity_main_root"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/white" >

    <ImageButton
        android:id="@+id/activity_main_add_button"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:background="@drawable/button"
        android:contentDescription="@string/desc_add"
        android:onClick="addGame"
        android:src="@android:drawable/ic_input_add"
        android:tint="@color/gray" />

    <View
        android:id="@+id/stub1"
        android:layout_width="2dp"
        android:layout_height="40dp"
        android:layout_toRightOf="@id/activity_main_add_button"
        android:background="@color/light_gray" />

    <ImageButton
        android:id="@+id/activity_main_menu_button"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_toRightOf="@id/stub1"
        android:background="@drawable/button"
        android:contentDescription="@string/desc_add"
        android:onClick="showMenu"
        android:scaleType="fitXY"
        android:src="@drawable/square_button"
        android:tint="@color/gray" />

    <View
        android:id="@+id/stub2"
        android:layout_width="2dp"
        android:layout_height="40dp"
        android:layout_toRightOf="@id/menu_button"
        android:background="@color/light_gray" />

    <EditText
        android:id="@+id/activity_main_search"
        android:layout_width="fill_parent"
        android:layout_height="40dp"
        android:layout_toRightOf="@id/stub2"
        android:background="@drawable/default_background"
        android:gravity="center"
        android:hint="@string/search_game"
        android:inputType="text"
        android:textColor="@color/black"
        android:textSize="20sp"
        android:textStyle="bold" />

    <ListView
        android:id="@+id/activity_main_list"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@id/activity_main_add_button"
        android:layout_margin="10dp"
        android:divider="@color/white"
        android:dividerHeight="10dp" >
    </ListView>

</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

谢谢,Solidus

android cursor android-edittext

9
推荐指数
1
解决办法
8689
查看次数

如何在WebView中禁用软键盘

我需要在我的WebView和WebView的所有edittexts中禁用打开软键盘(我不能访问因为它在WebView中).

我尝试在我的清单文件中使用'android:windowSoftInputMode ="stateAlwaysHidden"',但是当我点击可编辑字段时键盘弹出.

什么是在WebView中禁用软键盘的正确解决方案?

编辑:

我发现解决方案(在这篇文章中感谢@ g00dy,在/sf/answers/637575361/后感谢@Kachi )打开后关闭键盘:

public class ActivityBrowser extends Activity 
 {
   private static WebView        webviewHTML;
   private static View           viewRootHTML;
   private static int            iViewRootHTMLHeightDifferent; 
   public  static Context        contextBrowser;

    {
      contextBrowser = this;
    }


   public class webViewClient extends WebViewClient
    {
      @Override
      public void onPageStarted( WebView view, String url, Bitmap favicon)
       {
         if( view == webviewHTML)  super.onPageStarted( view, url, favicon);
       }

      @Override
      public void onPageFinished( WebView view, String url)
       {
         if( view == webviewHTML)  super.onPageFinished( view, url);
       } …
Run Code Online (Sandbox Code Playgroud)

java android webview android-softkeyboard

8
推荐指数
2
解决办法
1万
查看次数