Проверьте мой макет: нижняя кнопка держится над клавиатурой
У меня есть макет, который делает почти то, что я хочу. Там только одна ошибка относительно кнопки внизу. Я всегда должен оставаться внизу. Но всякий раз, когда я поднимаю мягкую клавиатуру, кнопка будет отображаться над клавиатурой. Это не то, что я хочу, но он должен покрываться клавиатурой.
Кроме того, я был бы рад, если бы вы могли прокомментировать, как построен макет.
Спасибо,
Стефф
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical">
<LinearLayout android:id="@+id/l_layout_tags"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:text="TAGS:"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<AutoCompleteTextView android:id="@+id/actv_tags"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:imeOptions="actionDone" />
<ImageButton android:id="@+id/btn_add_tag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_input_add"
android:onClick="addTag"/>
</LinearLayout>
<ScrollView android:id="@+id/sv_scroll_contents"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_below="@id/l_layout_tags"
android:scrollbarFadeDuration="2000" >
<TableLayout android:id="@+id/t_layout_contents"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:stretchColumns="1"
android:paddingRight="5dip">
<TableRow android:id="@+id/tr_template">
<ImageView android:id="@+id/iv_blank"
android:src="@android:color/transparent" />
<EditText android:id="@+id/et_content1"
android:gravity="top"
android:maxWidth="200dp"
android:imeOptions="actionDone" />
</TableRow>
</TableLayout>
</ScrollView>
<LinearLayout android:id="@+id/l_layout_media_btns"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_centerHorizontal="true"
android:layout_below="@id/sv_scroll_contents" >
<ImageButton android:id="@+id/btn_camera"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_menu_camera"
android:onClick="takePicture" />
<ImageButton android:id="@+id/btn_video"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_menu_camera" />
<ImageButton android:id="@+id/btn_audio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_btn_speak_now" />
<ImageButton android:id="@+id/btn_sketch"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@android:drawable/ic_menu_edit" />
</LinearLayout>
<ImageButton android:id="@+id/btn_save_note"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:src="@android:drawable/ic_menu_upload" />
</RelativeLayout>
Ответы
Ответ 1
Добавьте android:windowSoftInputMode="adjustPan"
в свой тег активности в AndroidManifest.xml.
Таким образом, клавиатура программного обеспечения не будет изменять размер вашего макета, и ваша кнопка останется под ней.
Посмотрите здесь, чтобы получить лучшее представление о различных режимах мягкой клавиатуры.
Ответ 2
У меня была аналогичная проблема. В котором я должен показывать одну кнопку внизу экрана всегда. Я решил проблему нажатия кнопки на клавиатуре следующим образом:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:background="@color/white"
android:gravity="center_horizontal"
>
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:layout_gravity="center"
android:id="@+id/ff"
>
.......
</ScrollView>
<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1">
<TextView
android:id="@+id/txtSigninProblem"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/ff"
android:layout_gravity="bottom|center_horizontal"
android:text="Problem Signing in?"
/>
</LinearLayout>
</LinearLayout>