修改:
我需要使用键盘,但它隐藏了我的EditText
,我需要它来滚动,所以键盘没有隐藏它。
我正在使用三星平板电脑。
我的风格:
parent="android:Theme.Holo.NoActionBar.Fullscreen"
EditText
字段位于可滚动视图中,如下所示:
片段布局:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<ScrollView
android:layout_height="wrap_content"
android:layout_width="match_parent">
<LinearLayout
android:layout_height="match_parent"
android:layout_marginBottom="20dp"
android:layout_width="match_parent"
android:orientation="vertical">
<TextView
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:text="@string/depot_code"/>
<EditText
android:hint="@string/enter_depot_code"
android:id="@+id/etlocationId"
android:imeOptions="actionNext"
android:inputType="number"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:lines="1"
android:maxLength="12"
android:singleLine="true">
<requestFocus/>
</EditText>
<TextView
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:text="@string/name"/>
<EditText
android:hint="@string/enter_name"
android:id="@+id/etname"
android:imeOptions="actionNext"
android:inputType="textPersonName"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:lines="1"
android:maxLength="24"
android:singleLine="true"/>
<TextView
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:text="@string/street"/>
<EditText
android:hint="@string/enter_street"
android:id="@+id/etstreet"
android:imeOptions="actionNext"
android:inputType="textPostalAddress"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:lines="1"
android:maxLength="24"
android:singleLine="true"/>
<TextView
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:text="@string/suburb"/>
<EditText
android:hint="@string/enter_suburb"
android:id="@+id/etsuburb"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:lines="1"
android:maxLength="24"
android:singleLine="true"/>
<TextView
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:text="@string/state"/>
<Spinner
android:focusable="true"
android:focusableInTouchMode="true"
android:id="@+id/spinner"
android:imeOptions="actionNext"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_width="fill_parent"
android:spinnerMode="dropdown"/>
<TextView
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:text="@string/phone"/>
<EditText
android:hint="@string/enter_phone"
android:id="@+id/etphone"
android:imeOptions="actionDone"
android:inputType="phone"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:lines="1"
android:maxLength="12"
android:singleLine="true"/>
<Button
android:id="@+id/btnadd"
android:layout_gravity="center"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:text="@string/add"/>
</LinearLayout>
</ScrollView>
</FrameLayout>
活动布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/tech_controller"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
< .../ Layouts. ../>
<FrameLayout
android:id="@+id/second"
android:layout_height="match_parent"
android:layout_width="fill_parent"/>
</LinearLayout>
已经提出了类似的问题,但我没有找到有效的答案。
我有一个项目,它使用附加到一个活动的许多片段。 在我的活动清单中:
android:windowSoftInputMode="stateHidden"
某些片段需要用户输入。
在片段布局中我使用:
每个片段嵌套如下:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent" .../>
<ScrollView
android:layout_height="match_parent"
android:layout_width="match_parent">
<LinearLayout
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical">
<EditText
android:imeOptions="actionNext"
or
android:imeOptions="actionDone" .../>
这很有效。除了 键盘隐藏位于页面下方的EditTexts。
我一遍又一遍地读到这个:
http://developer.android.com/reference/android/widget/TextView.html#attr_android:imeOptions
尝试了这些建议,但是在调用活动时可以看到键盘,这是我不想要的。它也行不通。也许是因为它是片段?
Android Keyboard hides EditText
我一直在尝试制定动态解决方案。任何帮助表示赞赏。
编辑:这是在平板电脑上使用,只有一个键盘选项,语言更改。
编辑:我的解决方案
我通过安装另一个软键盘解决了这个问题。 https://code.google.com/p/softkeyboard/wiki/HowTo
答案 0 :(得分:7)
尝试仅将WindowsSoftInputMode
用作adjustpan
。
例如:
android:windowSoftInputMode="adjustPan"
答案 1 :(得分:4)
尝试在此SO answer中提及的片段InputMethodManager.hideSoftInputFromWindow()
功能期间致电onActivityCreated()
?
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
AppUtil.hideKeyboard(getActivity(), getView());
}
hideKeyboard()
看起来像这样
public static void hideKeyboard(Activity activity, View viewToHide) {
InputMethodManager imm = (InputMethodManager) activity
.getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(viewToHide.getWindowToken(), 0);
}
答案 2 :(得分:2)
您可以尝试将其放入片段的onActivityCreated中:
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
这不应该在使用片段加载或开始您的活动时使键盘。
答案 3 :(得分:2)
我通过谷歌游戏商店安装另一个软键盘解决了这个问题。
Petey's评论让我探索了这个解决方案。
您使用的IME具有自己的“浮动”布局,您可以使用内置IME(如Google键盘)尝试代码,还是将IME设置为正常的全宽布局?
所以我想,视频布局的播放量不会影响具有独立布局的软键盘。
我使用了这个链接https://code.google.com/p/softkeyboard/wiki/HowTo
它甚至适用于Android Manifest:
android:windowSoftInputMode="stateHidden"
然后我使用imeoptions
来控制视图中编辑器光标的流程。
修改更新
我刚刚在一个没有品牌的Android平板电脑上试过这个应用程序,它带有一个通用的Android键盘,它可以工作,无需改变任何东西。三星默认键盘似乎很痛苦。
答案 4 :(得分:1)
将其更改为LinearLayout :
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
到
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
(和结束标签)。注意方向。
更新清单删除此:
<application ... >
<activity
android:windowSoftInputMode="stateVisible|adjustResize|adjustPan">
...
</activity>
...
</application>
更改此(身高):
<ScrollView
android:layout_height="wrap_content"
android:layout_width="match_parent">
答案 5 :(得分:1)
我已尝试过此代码并解决了我的问题。
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
答案 6 :(得分:0)
请记住,隐藏键盘不适用于 getActivity()。getWindow()。setFlags(WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS,WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
答案 7 :(得分:0)
在显示小吃栏小部件之前,先隐藏这样的键盘,
public void showSnackBar(){
InputMethodManager manager = (InputMethodManager)getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
manager.hideSoftInputFromWindow(getView().getWindowToken(),0);
Snackbar snackbar = Snackbar.make(getView(), "Some message!", Snackbar.LENGTH_INDEFINITE).show();
}
答案 8 :(得分:-1)
对我来说有用的是使用ScrollView,就像我在FrameLayout中一样,我添加了这个属性:android:windowSoftInputMode =&#34; adjustPan&#34;。最后,它看起来像这样,它正在工作。我不需要以编程方式更改任何内容:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ProductFragment"
android:windowSoftInputMode="adjustPan">
<ScrollView
android:layout_height="wrap_content"
android:layout_width="match_parent">
...
</ScrollView>
</FrameLayout>