Как мне расположить раскладку прямо над экранной клавиатурой андроида? - PullRequest
27 голосов
/ 03 июня 2011

Смотрите прикрепленное фото. Твиттер делает это хорошо. У них есть раскладка, которую я буду называть панелью инструментов из-за отсутствия лучшего термина, прямо над экранной клавиатурой. Как я могу сделать это с моим кодом?

enter image description here

UPDATE: Вот мой макет:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="#ffffff">
    <RelativeLayout android:id="@+id/actionbarRelativeLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@drawable/actionbar_gradient">
        <ImageButton android:id="@+id/imageButton" android:layout_width="wrap_content" android:background="@drawable/stocktwits" android:layout_height="wrap_content"></ImageButton>
        <TextView android:layout_width="wrap_content" android:id="@+id/charCountTextView" android:text="140" android:layout_alignParentRight="true" android:layout_height="wrap_content" android:textColor="#ffffff" android:textStyle="bold" android:textSize="18sp" android:gravity="center_vertical" android:layout_centerVertical="true"></TextView>
    </RelativeLayout>
    <EditText android:layout_width="match_parent" android:id="@+id/composeEditText" android:focusable="true" android:hint="Share an idea with the community" android:gravity="left|top" android:layout_height="fill_parent" android:layout_weight="1"></EditText>
    <LinearLayout android:layout_width="match_parent" android:id="@+id/border" android:background="#c4c4c4" android:baselineAligned="false" android:layout_height="1dp"></LinearLayout>
    <LinearLayout android:layout_height="wrap_content" android:id="@+id/toolbarLinearLayout" android:orientation="horizontal" android:padding="5dip" android:layout_width="fill_parent" android:background="@drawable/gray_toolbar_gradient">
        <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/shortenButton" android:background="@drawable/shortenbutton" android:layout_weight="0"></Button>
        <LinearLayout android:layout_height="match_parent" android:layout_width="wrap_content" android:id="@+id/linearLayout1" android:layout_weight="1"></LinearLayout>
        <CheckBox android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/twitterCheckBox" android:textColor="#000000" android:layout_weight="0" android:background="@drawable/twittergraybutton"></CheckBox>
        <Button android:layout_height="wrap_content" android:layout_weight="0" android:id="@+id/sendButton" android:layout_width="wrap_content" android:background="@drawable/sharebutton"></Button>
    </LinearLayout>

</LinearLayout>

А вот мой манифест, в котором я указываю softInputMode:

<activity android:name="ShareActivity"
              android:theme="@android:style/Theme.NoTitleBar"
              android:windowSoftInputMode="adjustResize">
    </activity>

Ответы [ 3 ]

32 голосов
/ 03 июня 2011

Убедитесь, что для режима мягкого ввода установлено значение AdjustResize , затем поместите макет с панелью инструментов в нижней части своей деятельности.

Пример:

<LinearLayout android:orientation="vertical"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    <FrameLayout android:id="@+id/my_content"
            android:layout_width="match_parent"
            android:layout_height="0dip"
            android:layout_weight="1">
        <!-- Your content here -->
    </FrameLayout>
    <LinearLayout android:id="@+id/my_toolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
        <!-- Your toolbar items here -->
    </LinearLayout>
</LinearLayout>
10 голосов
/ 07 марта 2012

Это для людей, у которых после настройки AdjustResize все равно не работает, есть статья: AdjustResize не работает в полноэкранном режиме

У меня действительно был установлен полноэкранный режим, при настройке моей темы обратно на не полноэкранную тему макеты изменялись так, как хотелось.

0 голосов
/ 07 августа 2014

Важно добавление к ответам выше.

При работе с DialogFragment применяется полноэкранный режим неявно .

Это означает, что вы должны:
1) установить стиль в onCreate () вашего DialogFragment:

public class YourDialogFragment extends DialogFragment {
...
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Holo_NoActionBar);
        }
}

2) если вы используете свою собственную тему, вы должны обращаться с ней так:

<style name="AppTheme" parent="AppBaseTheme">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowFullscreen">false</item>
</style>
...