继承人的困境:我正在显示一个屏幕,其中有一个输入字段和一个标签内的2个按钮(共有3个标签,它们位于屏幕的底部).2个按钮设置在屏幕的左下方和右下方,位于选项卡的正上方.当我点击输入字段时,标签和按钮都被推到键盘顶部.
我希望只按下按钮,并将标签保留在原来的位置,在底部.一旦我确定软键盘正在显示,我正在考虑将标签的可见性设置为GONE,并且一旦软键盘消失就可以看到VISIBLE.
是否有某种类型的软键盘监听器,或者输入字段?也许OnFocusChangeListener是编辑文本的一些棘手的用法?如何确定键盘是否可见?
我有一个简单的登录视图,如下所示.
如果任何EditText增益集中,键盘将显示(软).红色虚线应勾勒出这种行为:

我需要的是,键盘显示时,底部的按钮(注册和帮助)是不可见的.登录按钮的底端应在键盘上,这样既EditTexts 与该Login Button可见.
如果可能,最多应该看到徽标的一半(取决于屏幕尺寸)
如果可能的话,定义一个额外的布局xml,如"键盘可见",这将是完美的.
我已经按照这里的各种问题和答案设置我的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.
使用时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
我有一个小的演示聊天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) 我在清单中使用了android:windowSoftInputMode ="adjustResize"来防止键盘隐藏活动按钮.它可以工作,但是当键盘打开时,我的按钮会向上移动.它有点跳跃,我想知道 - 我可以有任何动画来顺利过渡吗?
<activity
android:name=".Activity"
android:screenOrientation="portrait"
android:windowSoftInputMode="adjustResize">
</activity>
Run Code Online (Sandbox Code Playgroud) 我有一小组大约90个用户非常重要,所以当这些商业客户中的一个或两个希望在他们的网络应用程序中更改UI时,他们通常会获得专用的开发资源.但是,对于我们来说,确切了解整个组织如何使用该应用程序非常重要,因为该组往往对其UI应该如何看起来具有强烈的个人观点,并且他们都以不同方式使用该应用程序.我在识别硬件和软键盘的使用方面遇到了最大麻烦.最理想的是,我正在寻找一个简单的答案,"使用新的Window.TabletMode == true!" 我不认为这个简单的答案存在.
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使用了软键盘(或硬键盘).之后,我将取消订阅事件处理程序.但是我工作的这部分不太受关注,因为我不认为我会陷入任何困境,但我不希望任何人花时间去美化或开发一个巨大的例子.
我在相对布局中使用了scrollview.
当没有键盘时,我可以在所有手机中滚动到页面的末尾,在某些手机中,我可以在键盘打开时完全查看滚动布局.ie) - 键盘上方滚动视图的结尾.
我分析的问题是因为键盘的类型在不同的Android设备中有所不同.
得到一些答案,在活动清单中添加windowSoftInputMode.
还添加了: android:windowSoftInputMode="stateHidden|adjustResize"
但仍然遇到同样的问题.如果您有解决方案或遇到问题,请分享您的想法.谢谢你的时间.
如何在显示键盘时仅显示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
我需要在我的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) android ×9
java ×3
keyboard ×3
scrollview ×2
xml ×2
browser ×1
cursor ×1
javascript ×1
tablet ×1
webview ×1