0

我正在创建一个带有滚动视图相对布局的布局。我面临的问题是,一旦软键盘打开,布局就会重新调整大小。

这是布局文件

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:padding="10px" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

    <TextView
        android:id="@+id/settings_textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="15dp"
        android:text="Settings"
        android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        android:id="@+id/trainingSchedule_textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/settings_textView"
        android:layout_marginLeft="19dp"
        android:layout_marginTop="22dp"
        android:text="Training Schedule:"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <EditText
        android:id="@+id/trainingSchedule_editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/trainingSchedule_textView"
        android:layout_alignBottom="@+id/trainingSchedule_textView"
        android:layout_marginLeft="14dp"
        android:layout_toRightOf="@+id/trainingSchedule_textView"
        android:ems="10" >
    </EditText>

    <TextView
        android:id="@+id/days_textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/trainingSchedule_textView"
        android:layout_below="@+id/trainingSchedule_editText"
        android:layout_marginTop="34dp"
        android:text="Days:"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <EditText
        android:id="@+id/days_editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/days_textView1"
        android:layout_alignBottom="@+id/days_textView1"
        android:layout_alignLeft="@+id/trainingSchedule_editText"
        android:ems="10"
        android:inputType="number" />

    <TextView
        android:id="@+id/time_textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/days_textView1"
        android:layout_below="@+id/days_editText"
        android:layout_marginTop="37dp"
        android:text="Time:"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <EditText
        android:id="@+id/time_editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/time_textView"
        android:layout_alignBottom="@+id/time_textView"
        android:layout_alignLeft="@+id/days_editText"
        android:ems="10"
        android:inputType="time" >
    </EditText>

    <TextView
        android:id="@+id/timezone_textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/time_textView"
        android:layout_centerVertical="true"
        android:text="Time Zone:"
        android:textAppearance="?android:attr/textAppearanceSmall" />


    <EditText
        android:id="@+id/timezone_editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/timezone_textView"
        android:layout_alignBottom="@+id/timezone_textView"
        android:layout_alignLeft="@+id/time_editText"
        android:layout_alignParentRight="true"
        android:ems="10"
        android:inputType="number" >


    </EditText>

    <TextView
        android:id="@+id/frequency_textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/timezone_textView"
        android:layout_below="@+id/timezone_editText"
        android:layout_marginTop="41dp"
        android:text="Frequency:"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <EditText
        android:id="@+id/frequency_editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/frequency_textView"
        android:layout_alignBottom="@+id/frequency_textView"
        android:layout_alignLeft="@+id/timezone_editText"
        android:ems="10" />

    <TextView
        android:id="@+id/notifications_textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/frequency_textView"
        android:layout_below="@+id/frequency_editText"
        android:layout_marginTop="42dp"
        android:text="Notifications:"
        android:textAppearance="?android:attr/textAppearanceSmall" />

    <EditText
        android:id="@+id/notifications_editText"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/notifications_textView"
        android:layout_alignBottom="@+id/notifications_textView"
        android:layout_alignLeft="@+id/frequency_editText"
        android:ems="10" />

</RelativeLayout>
</ScrollView>

这是在模拟器中运行后的输出:

仿真器输出

我怎样才能解决这个问题?

4

3 回答 3

1

无需对您的 xml 文件进行更多更改。请从您现有的代码中替换以下代码,我做了一些小改动。

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:fillViewport="true"
    android:padding="10px" >

    <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <TextView
            android:id="@+id/settings_textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_centerHorizontal="true"
            android:layout_marginTop="15dp"
            android:text="Settings"
            android:textAppearance="?android:attr/textAppearanceMedium" />

        <TextView
            android:id="@+id/trainingSchedule_textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/settings_textView"
            android:layout_marginLeft="19dp"
            android:layout_marginTop="22dp"
            android:text="Training Schedule:"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/trainingSchedule_editText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/trainingSchedule_textView"
            android:layout_alignBottom="@+id/trainingSchedule_textView"
            android:layout_marginLeft="14dp"
            android:layout_toRightOf="@+id/trainingSchedule_textView"
            android:ems="10" >
        </EditText>

        <TextView
            android:id="@+id/days_textView1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/trainingSchedule_textView"
            android:layout_below="@+id/trainingSchedule_editText"
            android:layout_marginTop="34dp"
            android:text="Days:"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/days_editText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/days_textView1"
            android:layout_alignBottom="@+id/days_textView1"
            android:layout_alignLeft="@+id/trainingSchedule_editText"
            android:ems="10"
            android:inputType="number" />

        <TextView
            android:id="@+id/time_textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/days_textView1"
            android:layout_below="@+id/days_editText"
            android:layout_marginTop="34dp"
            android:text="Time:"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/time_editText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/time_textView"
            android:layout_alignBottom="@+id/time_textView"
            android:layout_alignLeft="@+id/days_editText"
            android:ems="10"
            android:inputType="time" >
        </EditText>

        <TextView
            android:id="@+id/timezone_textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/time_textView1"
            android:layout_below="@+id/time_editText"
            android:layout_marginTop="34dp"
            android:text="Time Zone:"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/timezone_editText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/timezone_textView"
            android:layout_alignBottom="@+id/timezone_textView"
            android:layout_alignLeft="@+id/time_editText"
            android:layout_alignParentRight="true"
            android:ems="10"
            android:inputType="number" >
        </EditText>

        <TextView
            android:id="@+id/frequency_textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/timezone_textView"
            android:layout_below="@+id/timezone_editText"
            android:layout_marginTop="41dp"
            android:text="Frequency:"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/frequency_editText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/frequency_textView"
            android:layout_alignBottom="@+id/frequency_textView"
            android:layout_alignLeft="@+id/timezone_editText"
            android:ems="10" />

        <TextView
            android:id="@+id/notifications_textView"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignLeft="@+id/frequency_textView"
            android:layout_below="@+id/frequency_editText"
            android:layout_marginTop="42dp"
            android:text="Notifications:"
            android:textAppearance="?android:attr/textAppearanceSmall" />

        <EditText
            android:id="@+id/notifications_editText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBaseline="@+id/notifications_textView"
            android:layout_alignBottom="@+id/notifications_textView"
            android:layout_alignLeft="@+id/frequency_editText"
            android:ems="10" />
    </RelativeLayout>

</ScrollView>
于 2012-11-01T08:00:52.290 回答
0

将此属性设置android:layout_below="xxxx"为每个TextView.

您已将其设置为仅时间

还添加时区,频率等......

你的问题将得到解决。

于 2012-11-01T07:30:04.307 回答
0

尝试android:windowSoftInputMode在您的清单文件中为活动设置属性。假设您的活动名称是KeyBoardScrollIssue. 那么活动条目应如下所示:

<activity
        android:name=".KeyBoardScrollIssue"
        android:label="@string/title_activity_key_board_scroll_issue" android:windowSoftInputMode="adjustPan">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
于 2012-11-01T07:45:41.493 回答