键盘启动时,Android片段视图不会滚动

时间:2017-10-13 18:18:39

标签: android android-fragments keyboard

我正在加载像这样的片段

String tag = fragment.getClass().getSimpleName();
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction transaction = fragmentManager.beginTransaction();
transaction.replace(android.R.id.content, fragment,tag);
transaction.addToBackStack(tag);
transaction.commit();

活动已设置此属性

android:windowSoftInputMode="adjustResize"

在我看来,我在底部有一个按钮,我想要保持在键盘顶部。这就是我的片段布局文件的样子

<RelativeLayout xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

    <ScrollView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:fillViewport="true"
    android:isScrollContainer="true">

         <LinearLayout..../>

    </ScrollView>

    <Button
    android:id="@+id/activate_button"
  style="@android:style/Widget.DeviceDefault.Light.Button.Borderless.Small"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true" />

 </RelativeLayout>

我在此视图中有一个EiditText,当我请求焦点时,会出现软键盘,但视图不会滚动。

任何人都可以告诉我为什么在键盘启动时视图没有调整大小?

2 个答案:

答案 0 :(得分:0)

试试这个,改变父 RelativeLayout `

<强>机器人:layout_height = “WRAP_CONTENT”  到      的机器人:layout_height = “match_parent”

<RelativeLayout xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent" >


    <Button
        android:id="@+id/activate_button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" 
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="10dp"/>

</RelativeLayout>

答案 1 :(得分:0)

我找到了两个对我有用的解决方案

将它放在片段的onCreate中:

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

或者

在Activity中使用ScrollView作为FrameLayout的父级,如下所示:

<ScrollView>
    <FrameLayout/>
</ScrollView>