FragText和片段中的软键盘问题

时间:2012-12-26 08:29:34

标签: android android-layout android-fragments

我目前正在构建一个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中,以便在调用软键盘时调整视图。但是,我们如何为片段设置它?

8 个答案:

答案 0 :(得分:56)

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

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

答案 1 :(得分:11)

一个Activity的所有片段与其父Activity具有相同的行为,但如果您需要针对不同Fragments的不同键盘行为,则可以从{{{} {动态更改此属性1}}像这样的代码:

Fragment

希望这有帮助!

答案 2 :(得分:8)

可以在Fragment Class中使用它来向上移动编辑文本并滚动到结束。

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

答案 3 :(得分:3)

android:windowSoftInputMode="adjustPan"

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

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

答案 4 :(得分:2)

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

答案 5 :(得分:2)

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

如果我们采用相对布局并保持上下依赖性,并使用

保留最后一个按钮
  

机器人:layout_alignParentBottom = “真”

然后它会产生问题,解决方案是将ScrollView置于根线性或相对布局内部,并在ScrollView内部将一个子视图视为线性或相对,并在RelativeLayout中将所有视图设置在彼此之下(如果在子视图中采用相对)或者不需要在Linear中设置依赖。

就是这样,它会起作用...... :)。

答案 6 :(得分:0)

如果您使用的是片段,请使用

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

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

getDialog().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);

答案 7 :(得分:-1)

   android:launchMode="singleTask"
   android:windowSoftInputMode="adjustPan"

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