我使用WebView作为我的Androind App.我遇到了问题,请求解决方案寻求帮助.
HTML页面中有一个文本字段.当它"聚焦"然后我打电话
mWebView.setFocusableInTouchMode(true);
Run Code Online (Sandbox Code Playgroud)
在Java代码中,Android软键盘会弹出让我键入.
问题是我需要在Java和调用中使用多线程来处理某些进程
mWebView.loadUrl(strJSCall);
Run Code Online (Sandbox Code Playgroud)
作为回调执行JavaScript函数,但键盘被隐藏!
我尝试的方法是强制键盘再次显示.但是,当调用'loadUrl'时,键盘如何显示?任何人都遇到同样的问题并已经解决了吗?
真诚的,小
当用户单击a中的(html)Textfield时WebView,将显示软键盘.但是当我用WebView.loadUrl()软键盘加载一些JS 消失时.
我了解加载新页面时的行为.但是如何更改WebView加载JS时的行为呢?
还有另一种加载JS的方法吗?
我也尝试手动处理键盘.但是有太多的缺点.确定是否显示键盘很复杂.我将不得不改变我的布局:
如何检查Android中软件键盘的可见性?
键盘不再受控制WebView了.
问:如何在不影响软键盘的情况下将JS加载到WebView中?
在WebView中,当我通过webview.loadUrl()执行JavaScript时,软键盘会在可见时消失.当我尝试在html文本字段中键入一些文本时,软键盘会消失(如果执行了JavaScript),我无法输入所有文本.
文本字段不会失去焦点,因此提示仍在文本字段中,但软键盘会关闭.
有人能告诉我如何解决这个问题?
使用此主题中显示的方法 - 如何检查Android中软件键盘的可见性?
我可以在纵向模式或横向模式下检测键盘隐藏,其中键盘不是全屏模式.如果横向模式下的键盘是全屏模式,则不会触发布局更改,因此我无法在OnGlobalLayoutListener中检测到它!
请在这件事上给予我帮助?有没有简单的方法来检测键盘隐藏?
注意:我无法在清单文件中更改任何内容.它应该全部通过代码动态完成!
谢谢!
我在我的应用程序的活动中使用网格视图.每个网格视图行包含三个复选框,可以根据用户想要从数据库查询的内容将其设置为选择/不选择.该活动还包括一个editText,每次活动开始时都会出现onScreenKeyboard,这里我遇到了问题.OnScreenKeyboard,当出现干扰gridview时,它的一些复选框就会消失.我的想法是每次配置更改时刷新网格视图.我尝试通过onRetainNonConfigurationInstance()返回一个对象来处理这个问题.当我使用getLastNonConfigurationInstance()来检索返回的对象时,Object包含一个数组列表,用于填充我的gridview行但是onCreate(),它显示为null.任何人都可以建议我如何处理这个问题或者是否有任何其他方法可以使我的gridView 在配置更改时表现正常.以下是代码,我想说清楚我已经在清单文件中添加了keyboardHidden配置更改但是当键盘出现时有时不会触发onConfigurationChanged()
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.failureselection);
findLocalWidgets(); //Initializes Layout Objects
if(configchanged){
//Re populate grid view
customDataGridRows = (ArrayList<CustomGridViewRow>) getLastNonConfigurationInstance();
dgvwFailures.setAdapter(new CustomGridViewAdapter(this,
customDataGridRows));
configchanged = false;
}else{
fillFailuresList(customDataGridRows);
dgvwFailures.setAdapter(new CustomGridViewAdapter(this,
customDataGridRows));
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
setContentView(R.layout.failureselection);
configchanged = true;
}
@Override
public Object onRetainNonConfigurationInstance() {
return customDataGridRows;
}
private boolean fillFailuresList(
ArrayList<CustomGridViewRow> …Run Code Online (Sandbox Code Playgroud) 我在这个问题中使用了Reuben Scratton的新答案代码.当我把它贴到我的代码,我得到红squigglies下 addOnGlobalLayoutListener(new OnGlobalLayoutListener(),onGlobalLayout()和activityRootView(heightDiff后).请帮我弄清楚出了什么问题.
谢谢这是我在.java页面上的代码
public class Details extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_details);
Intent intent = getIntent();
}
final View activityRootView = findViewById(R.id.details);
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int heightDiff = activityRootView.getRootView().getHeight() - activityRootView.getHeight();
if (heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
ImageButton backButton = (ImageButton)findViewById(R.id.back);
backButton.setImageResource(R.drawable.hide_keyboard);
}
}
});
Run Code Online (Sandbox Code Playgroud) 我正在开发版本为2.9.0的phonegap应用程序;
使用RWD Bookmarklet(http://responsive.victorcoulon.fr/)在桌面浏览器中对布局进行了全面测试,并且工作正常.但是,在移动设备或仿真器中进行测试时,布局中断了.经过一点点测试,我发现问题是状态栏的高度.将应用程序更改为全屏,问题解决了.
但是现在,当我专注于输入字段时,屏幕没有被调整,因此,键盘覆盖输入字段!
在查看了所有问题和相关问题之后,我找到了这个,这对我来说很有意义,但我想知道是否有办法让调整盘全屏工作,所以我不需要调整我的所有组件高度,根据设备等计算不同的状态栏高度
代码
form.html
<form id="login-form">
<div class="form-group">
<input type="text" name="login" class="form-control" id="login"
placeholder="xxxxxxx@example.com">
</div>
<div class="form-group">
<input type="password" name="pass" class="form-control"
id="password" placeholder="*******">
</div>
<a class="pull-right login-btn" id="btn-login" href="#"><span
class="image-replacement"></span></a>
<a class="pull-right login-btn" id="btn-cadastro" href="#"><span class="image-replacement"></span></a>
</form>
Run Code Online (Sandbox Code Playgroud)
Android Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:windowSoftInputMode="adjustPan"
package="com.com.app" android:versionName="1.0" android:versionCode="1" android:hardwareAccelerated="true">
<supports-screens
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true"
android:resizeable="true"
android:anyDensity="true"
/>
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission …Run Code Online (Sandbox Code Playgroud) 我有一个DialogFragment,通常以屏幕为中心,我试图移开屏幕键盘,如果有任何应该出现,因为它不是一个良好的用户体验键盘覆盖部分窗口,当完全未使用的屏幕房地产更远.
假设我已经解决了检测键盘出现或消失的问题,例如如何检查Android中软件键盘的可见性?.
目前我通过做这样的事情来移开窗口:
...
final WindowManager.LayoutParams params = dialog.getWindow().getAttributes();
params.gravity = Gravity.TOP;
params.verticalMargin = .1f; //or whatever
dialog.getWindow().setAttributes(params);
...
Run Code Online (Sandbox Code Playgroud)
这很好用,但是窗口突然变成了一个位置,这不是一个愉快的用户体验.有问题的窗口有一个成功的进入和退出动画 - 这些甚至可以在窗口布局更改后正常工作.如何在WindowManager.LayoutParams更改之间进一步设置窗口动画?
(我希望在可能的情况下继续使用http://developer.android.com/reference/android/view/Window.html中的} {{}的布局,而不是强迫DialogFragment进入我的活动的布局并从那里制作动画.
我试图在打开键盘时隐藏布局底部的一个特定按钮,以便为用户提供更多视图。
随着androidx.core:core-ktx:1.5.0-alpha02google的发布(最终)添加了一个调用的方法insets.isVisible(WindowInsetsCompat.Type.ime()),无论键盘是打开还是点击,它都会返回一个布尔值。
我正在使用一个基类EmailFragment,我在其中设置了函数以实现上述编写的功能。我的问题是我ViewCompat.setOnApplyWindowInsetsListener(view)从未被调用过(没有吐司等)。
我也尝试ViewCompat.setOnApplyWindowInsetsListener(view)直接在使用过的 Fragments 中进行设置,但这没有任何改变。
我的最小 API 是 21,在我的 AndroidManifest.XML 中有 android:windowSoftInputMode = adjustResize
abstract class EmailFragment<out T: ViewDataBinding>(
layout: Int,
// ... some other stuff that is not necessary for the question
) : BaseFragment<T>(layout) {
// ... some other stuff that is not necesarry for the question
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
hideButton(view)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: …Run Code Online (Sandbox Code Playgroud)