2015-01-09 6 views
1

У меня проблема с моей компоновкой. В моем макете у меня есть 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" /> 

Заранее спасибо!

+0

Можете ли вы добавить изображение своего макета без открытия клавиатуры? Или, скорее, картина того, как он должен выглядеть? – bwegs

+0

'Различные методы от" android: windowSoftInputMode "' что именно вы пробовали? И что такое «тема» вашей «активности»? – Mike

+0

Я попробовал «adjustPan», «stateHidden», «stateAlwaysHidden» и «adjust resize». Кажется, ничто ничего не изменило. Добавлено изображение для правильной компоновки в моем сообщении. – Deutro

ответ

1

Я думаю, что следующая проблема:

Вы говорите своему 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. Потому что я не уверен, как это объявлено прямо сейчас! Надеюсь, это поможет!

+0

Да, это сработало. К сожалению, выбор даты еще немного под EditText. Как видно на первом снимке, январь не полностью виден. – Deutro

+0

@deutro рад помочь вам. Первый выглядит хорошо для меня, я думаю, вы имеете в виду второй – Mike

+0

Да, извините. Я имел в виду вторую картину. – Deutro

Смежные вопросы