我已经编写了以下常规的、每次都可用的函数来显示和关闭键盘:
|==|以编程方式显示和关闭键盘:
InputMethodManager iptKeybodMgrVar;
void keybodDspFnc(EditText txtEdtVyuVar)
{
txtEdtVyuVar.requestFocus();
if (iptKeybodMgrVar == null)
{
iptKeybodMgrVar = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
}
iptKeybodMgrVar.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
}
void keybodDsmFnc(EditText txtEdtVyuVar)
{
iptKeybodMgrVar.hideSoftInputFromWindow(txtEdtVyuVar.getWindowToken(), 0);
}
但问题是,当编辑文本位于键盘下方时,活动不会向上移动。仅当用户开始键入时,它才会移动。
那么,一旦键盘出现,我如何使它向上移动呢?
我浏览了下面的所有链接,没有任何帮助:
Android:如何防止软键盘将我的视图向上推?
adjustPan不阻止键盘覆盖编辑文本
Android:软键盘覆盖编辑文本(adjustresize或adjustpan不起作用)
https://readyandroid . WordPress . com/Android-soft-keyboard-covers-edit text-field-over scroll-to-soft-keyboard/
我试过了,但没有工作:
android:windowSoftInputMode="adjustPan|stateAlwaysHidden"
android:windowSoftInputMode="adjustResize|stateAlwaysHidden"
android:windowSoftInputMode="adjustResize|adjustPan"
还尝试了以下代码:
(所以,不是:)显示软键盘时向上移动布局?
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
//This Code brings up the keyboard at starting of the activity and pushes all Edit Text up. So not useful
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
我可以添加ScrollView,但它似乎只是一个解决方法,似乎不是一个解决方案。
感觉应该有一个类似于设置InputMethodManager的编程解决方案。
根布局
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:id="@+id/root"
android:layout_height="match_parent">
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent">
<!--extra views-->
<!--add below layout programmatically-->
<!--<include layout="@layout/layout_dynamic"/>-->
</ScrollView>
</RelativeLayout>
动态布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dynamicLinearLayout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="text" />
</LinearLayout>
动态添加视图(无需指定行为)
private void addEditText(){
RelativeLayout mRootLayout = (RelativeLayout) findViewById(R.id.root);
LayoutInflater inflater = LayoutInflater.from(mActivity);
View newView = inflater.inflate(R.layout.layout_dynamic,mRootLayout);
EditText editText = (EditText) newView.findViewById(R.id.editText);
mRootLayout.addView(newView);
}
清单文件
<activity
android:name=".MainActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize"
android:windowSoftInputMode="adjustPan"/>
您需要在LinearLayout中包装EditText,然后使用ScrollView包装它。如果您是通过代码实现的,这有点困难,所以我的建议是更改您的xml布局。
问题内容: 首先,我已经看到了该线程。我尝试了那里给出的可接受的方法。 我的应用程序中有两个屏幕。 第一个有2个EditText,一个是用户名,另一个是密码 第二个有一个ListView和一个EditText-过滤listView 在我的第一个屏幕中,我希望用户名EditText专注于启动,并且Keyboard应该可见。这是我的实现(通过删除不必要的/不相关的代码进行简化)。 app_login.
Android:show软键盘在点击布局底部实现的特定Edittext后自动覆盖Edittext字段的一半。当请求焦点在EditText软键盘上打开时,它将向上移动布局,但会覆盖EditText字段的一半。
问题内容: 我有一个多层PSD,其中一个特定的层是非光栅化文本。我试图从bash / perl / python / whatever- else程序中找出一种可行的方法: 加载PSD 编辑所述图层中的文本 展平图像中的所有图层 另存为Web友好格式,如PNG或JPG 我立刻想到了ImageMagick,但是我认为我无法通过IM编辑文本层。如果我可以通过其他编程方式完成前两个步骤,则可以始终使用I
问题内容: 我有从外部配置Web服务中获取的jdbc属性文件。在spring启动中,为了设置mysql属性,将这些属性添加到application.properties很容易: 如何在我的应用中以编程方式覆盖这些内容? Spring-batch道具也是如此: 问题答案: 你可以在对ApplicationEnvironmentPrepared事件作出反应的生命周期侦听器中添加其他属性源。 类似于以下
编辑#2:因为它看起来像一个bug,我已经在javaFx jira中发布了一个bug报告。您必须拥有一个帐户才能访问该问题。如果有新的信息,我会及时更新这篇文章。 原始帖子:我有一个简单的UI,带有一个按钮和一个树状视图。如果按钮被按下,应该会有一个新的项目添加到树视图。此项一出现在树中就应可编辑。 我使用的CellFactory是JavaFXAPI的一部分。 如果我看看api-留档(TreeVi
你知道有什么解决办法吗?如果可能的话,我不想使用第三方库。