web-dev-qa-db-ja.com

Androidオンスクリーンキーボードの真上にレイアウトを配置するにはどうすればよいですか?

添付の写真をご覧ください。 Twitterはそれをうまくやっています。それらにはレイアウトがあり、画面キーボードの真上に、より適切な用語がないためツールバーと呼びます。コードでこれを行うにはどうすればよいですか?

enter image description here

更新:これが私のレイアウトです:

<?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>
27
Sheehan Alam

ソフト入力モードが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>
32
adamp

これは、adjustResizeを設定した後も機能しなかった人向けで、記事があります: adjustResizeはフルスクリーンでは機能しません

テーマをフルスクリーン以外のテーマに戻すと、レイアウトのサイズが必要に応じて変更されたので、実際にこれをフルスクリーンに設定しました。

10
Ronnie

重要追加上記の回答に。

DialogFragmentで作業する場合、フルスクリーンが適用されます暗黙的に

つまり、次のことを行う必要があります。
1)DialogFragmentのonCreate()でスタイルを設定します。

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>
0
sberezin