打开键盘会破坏布局

时间:2015-01-09 21:43:28

标签: android android-layout

我的布局有问题。在我的布局中,我有一个EditText,一个DatePicker,一个TimePicker和一个Button。单击EditText会打开键盘,导致图片中显示的问题。 “android:windowSoftInputMode”中的不同方法没有改变任何东西。现在我不知道如何解决这个问题。

在输入文字之前隐藏其他组件是否是个好主意?这里的预期行为是什么?

correct layout

crumbled layout

<RelativeLayout 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" android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context="patrickengelkes.com.alleneune.activities.CreateEventActivity">


<EditText
    android:id="@+id/event_name_edit_text"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />

<DatePicker
    android:id="@+id/event_date_picker"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_below="@+id/event_name_edit_text"
    android:layout_centerHorizontal="true" />

<Button
    android:id="@+id/send_event_invites"
    android:text="@string/send_event_invites_to_members"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentEnd="true" />

<TimePicker
    android:id="@+id/event_time_picker"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:layout_above="@+id/send_event_invites"
    android:layout_alignLeft="@+id/event_time_picker"
    android:layout_alignStart="@+id/event_time_picker" />

提前致谢!

1 个答案:

答案 0 :(得分:1)

我认为以下是问题所在:

您告诉DatePicker它应该低于固定在顶部的EditText

然后你告诉你的TimerPicker高于你固定在底部的Button

现在,当您打开SoftInput按钮向上移动时,TimePicker也是如此。但EditText保持固定在顶部,您的DatePicker也是如此。

TimePickerDatePicker都得到wrap_content,因此TimePicker可以进入DatePicker的唯一方式!而这正是它的样子!

我会告诉TimePicker我应该保持低于DatePicker

android:below=="@id/event_date_picker"

看看会发生什么!因为在这种情况下,它被迫保持在DatePicker以下,并且不再像DatePicker那样漂浮在一层!我没有尝试过,也许你需要正确地声明android:windowSoftInputMode。因为我不确定它现在是如何宣布的! 希望它有所帮助!