29

我目前正在构建一个 android 应用程序,使用户能够拍照并写下它的详细信息。该应用程序使用 Sherlock 库。

我已经实现了一个 SherlockFragment 来显示图像和一些 EditText 和 TextView 以使用户能够键入图像的信息。但是,当其中一个 EditText 处于焦点时,所有字段都被向上推,软键盘弹出。

这是我的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/linear"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" 
    android:background="#FFFFFF">

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="fill_parent"
        android:layout_height="200dip"
        android:layout_above="@+id/textView"
        android:layout_marginTop="20dip"
        android:layout_marginBottom="20dip"
        android:contentDescription="desc" />

    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Title:"
        android:textStyle="bold"
        android:layout_above="@+id/editTextSimple" 
        android:layout_marginBottom="2dip"
        android:textSize="15sp"/>

     <EditText
        android:id="@+id/editTextSimple"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView1"
        android:layout_marginBottom="4dip">
        <requestFocus />
    </EditText>

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:text="Description:"
        android:textStyle="bold"
        android:layout_above="@+id/editTextSimple1" 
        android:layout_marginBottom="2dip"
        android:textSize="15sp"/>

    <EditText
        android:id="@+id/editTextSimple1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_above="@+id/textView2"  
        android:layout_marginBottom="12dip">
    </EditText>

    <Button android:textColor="#FF000000" 
        android:id="@+id/submitButton" 
        android:text="@string/memorySubmit" 
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="24dip"
        android:onClick = "submit"/>
</RelativeLayout>

据我了解,在一项活动中,必须将其放在<activity android:windowSoftInputMode="...." >Android Manifest 中才能在调用软键盘时调整视图。但是,我们如何为片段设置这个?

4

8 回答 8

61

这在我使用多个布局和一个viewstub来创建一个消息屏幕的场景中对我有用。把它放在 onCreate() 希望这会有所帮助。

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
于 2013-07-10T22:16:20.890 回答
12

one 的所有片段Activity都具有与其 parent 相同的行为Activity,但如果您需要不同的键盘行为来实现不同的Fragments,则可以从代码中动态更改此属性,Fragment如下所示:

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.softInputMode.SOFT_INPUT_ADJUST_PAN);

希望这可以帮助!

于 2012-12-26T08:43:25.133 回答
9

This can be used in Fragment Class to move the Edit text up and Scroll till end.

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
于 2014-04-17T10:07:06.523 回答
8
android:windowSoftInputMode="adjustPan"

与该活动相关的所有片段的行为都相同,如果您想更改特定片段的行为而不是使用以下片段

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);
于 2017-03-07T13:50:06.153 回答
2

尝试这个getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

于 2013-10-11T11:26:11.823 回答
2

我的项目中也出现了这个问题,我使用片段和选项卡开发了我的项目,

如果我们采用相对布局并保持上下依赖关系,最后使用按钮

android:layout_alignParentBottom="true"

那么它会出现问题,解决方案是在根线性或相对布局中使用 ScrollView,在 ScrollView 内部将一个子视图作为线性或相对,并在 RelativeLayout 中将所有视图设置为彼此下方(如果在子视图中使用相对)或不需要在线性中设置依赖关系。

就是这样,它会工作...... :)

于 2015-08-19T11:47:07.527 回答
0

如果您使用的是Fragment ,请使用

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN);

如果您使用的是DialogFragment然后使用这个

getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
于 2020-02-07T05:11:54.643 回答
-1
   android:launchMode="singleTask"
   android:windowSoftInputMode="adjustPan"

清单的这种变化对我来说很好

于 2016-09-01T08:41:30.090 回答