打开键盘会破坏布局
Opening keyboard destroys the layout
我的布局有问题。在我的布局中,我有一个 EditText、一个 DatePicker、一个 TimePicker 和一个 Button。单击 EditText 会打开导致图片中显示的问题的键盘。来自 "android:windowSoftInputMode" 的不同方法没有改变任何东西。现在我不知道如何解决这个问题。
在输入文本之前隐藏其他组件是个好主意吗?这里的预期行为是什么?
<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" />
提前致谢!
我认为是以下问题:
您是在告诉您的 DatePicker
它应该低于固定在顶部的 EditText
!
那么你是在告诉你的 TimerPicker
高于固定在底部的 Button
。
现在,当您打开 SoftInput
时,按钮会向上移动,您的 TimePicker
也会向上移动。但是 EditText 固定在顶部,您的 DatePicker
.
也是如此
TimePicker
和 DatePicker
都得到了 wrap_content
所以 TimePicker
唯一的出路就是进入 DatePicker
!这就是它的样子!
我会试着告诉 TimePicker
我应该保持在 DatePicker
:
以下
android:below=="@id/event_date_picker"
看看会发生什么!因为在那种情况下,它被迫保持在 DatePicker
以下并且不再像层一样漂浮到 DatePicker
中!我没试过,也许你需要正确声明 android:windowSoftInputMode
。因为我不确定它现在是如何声明的!
希望对您有所帮助!
我的布局有问题。在我的布局中,我有一个 EditText、一个 DatePicker、一个 TimePicker 和一个 Button。单击 EditText 会打开导致图片中显示的问题的键盘。来自 "android:windowSoftInputMode" 的不同方法没有改变任何东西。现在我不知道如何解决这个问题。
在输入文本之前隐藏其他组件是个好主意吗?这里的预期行为是什么?
<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" />
提前致谢!
我认为是以下问题:
您是在告诉您的 DatePicker
它应该低于固定在顶部的 EditText
!
那么你是在告诉你的 TimerPicker
高于固定在底部的 Button
。
现在,当您打开 SoftInput
时,按钮会向上移动,您的 TimePicker
也会向上移动。但是 EditText 固定在顶部,您的 DatePicker
.
TimePicker
和 DatePicker
都得到了 wrap_content
所以 TimePicker
唯一的出路就是进入 DatePicker
!这就是它的样子!
我会试着告诉 TimePicker
我应该保持在 DatePicker
:
android:below=="@id/event_date_picker"
看看会发生什么!因为在那种情况下,它被迫保持在 DatePicker
以下并且不再像层一样漂浮到 DatePicker
中!我没试过,也许你需要正确声明 android:windowSoftInputMode
。因为我不确定它现在是如何声明的!
希望对您有所帮助!