質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

  • Android

    6516questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • XML

    653questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

  • デザイン

    86questions

    プログラミングでのデザインとは、プログラムの構成や、使用の信頼性・持続性・正確性・利便性の目標達成にはどうするのがベストなのか特定の選択を行うことです。

ソフトウェアキーボードが出てきた際にフッターのボタンを上げない方法

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,936

type23

score 8

前提・実現したいこと

  • フッターにボタンを表示させたい
  • EditTextにフォーカスが当たった際にフッターのボタンを上げたくない。

EditTextにフォーカスが当たりソフトウェアキーボードが表示された際に、下部に固定しておきたい保存ボタンがソフトウェアの上に表示されてしまいます。
フッターのボタンが2段になる場合もあるため、保存ボタンをソフトウェアキーボードの裏に隠したいです。
どの様にレイアウトを組めばよいでしょうか?

発生している問題・エラーメッセージ

保存ボタンをキーボードの裏に隠したい

該当のソースコード

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/activity_settigs"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".SettingsActivity">

    <ScrollView
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="設定1" />

            <EditText
                android:id="@+id/setting1"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="設定2" />

            <EditText
                android:id="@+id/setting2"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="設定3" />

            <EditText
                android:id="@+id/setting3"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="設定4" />

            <EditText
                android:id="@+id/setting4"
                android:layout_width="match_parent"
                android:layout_height="wrap_content" />
        </LinearLayout>
    </ScrollView>

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="保存" />
</LinearLayout>

試したこと

該当のlayoutのxmlとAndroidManifest.xmlをいじって見ましたが

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="bottom"
        android:text="保存" />
        <activity
            android:name=".SettingsActivity"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="adjustResize" />

補足情報(言語/FW/ツール等のバージョンなど)

Kitkatの実機とlolipoのエミュレータで確認中。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

android:windowSoftInputMode="adjustResize" 
は逆にリサイズされて表示されちゃうので切ってください。

それでもおかしいならrootのレイアウトに
android:fitsSystemWindows="true"
あたりも必要かもしれません。

なお、Kitkat以降でandroid:windowTranslucentStatus=true
でフルスクリーンにしてしまうとadjustResize関連はおかしくなるようです。
https://code.google.com/p/android/issues/detail?id=63777


更新
ちょっとadjust周りを調べてみました。

android:windowSoftInputMode="adjustPan"  

を利用すればいけそうです(Android6で確認済)。
adjustNothingというのも実は隠れてありますが。ドキュメントにはないようなので上のほうがいいかと。

AndroidManifestに対して以下な感じでしょうか。

        <activity
            android:name=".SettingsActivity"
            android:screenOrientation="portrait"
            android:windowSoftInputMode="stateVisible|adjustPan" />


レイアウトは編集しないです。
stateVisibleは最初にフォーカスあたってInputが表示されたくない場合は消してみてください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/04/04 14:02

    ありがとうございます。
    android:windowSoftInputMode="adjustResize" を削除してstyles.xmlに
    <item name="android:fitsSystemWindows">true</item>
    を追加してみましたが、結果は同じでした。
    AndroidStudioで新規作成した時に生成されるstyles.xmlをそのまま使ってます。

    ```xml
    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
    <item name="android:fitsSystemWindows">true</item>
    </style>
    ```
    (コメント蘭はMarkDownが使えないんだっけ??)

    キャンセル

  • 2017/04/04 14:04

    AndroidManifest.xmlで指定しているThemaであることは確認してます。
    <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    キャンセル

  • 2017/04/04 14:05

    ちょっと手元にPCがないので実際に確認できてはいませんが、themeにandroid:fitsSystemWindowsは設定しないほうがよいです。トースト等がおかしくなります。

    キャンセル

  • 2017/04/04 15:03

    前の質問から何度もありがとうございます。
    AndroidManifest.xmでapplicationや該当のactivityにもandroid:fitsSystemWindows="true"を設定しましたが、上手く行かないですね。。
    画面設計を修正する案も検討したほうが良さそうな気がしてきました。

    <activity
    android:name=".SettingsActivity"
    android:fitsSystemWindows="true"
    android:screenOrientation="portrait" />

    キャンセル

  • 2017/04/04 15:12

    おや?追記した内容でもできませんか?一応実機のOS5.0でも隠れました。

    あとandroid:fitsSystemWindowsは、ManifestではなくLayout側にということです。
    具体的にはLinearLayoutのとこにつけたりって意味です。

    キャンセル

  • 2017/04/04 15:24

    すみません。追記していただいた箇所に先程気が付き試しました。
    Manifestに追記したところ思うような動作になりました。

    本当に何度も、ありがとうございます!
    今は画像系の処理を実装しているので、また質問させて頂くことになりそうです。
    もしお見かけの際はチョロっと質問を読んでいただけると助かります。

    なお、android:fitsSystemWindows="true"は、Manifestでもactivityが読み込んでいるlayoutファイルのLinearLayoutでも試しましたがダメでした。

    キャンセル

  • 2017/04/04 15:28

    はい。ようございました。

    android:fitsSystemWindowsがダメというのがどういった状況なのかちょっとわかってないのですが、なぜThemeはやめてといったかというと
    http://qiita.com/pside/items/454293288dc3684ed1fc
    にあるような形になるからでございます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.52%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Android

    6516questions

    Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

  • XML

    653questions

    XMLは仕様の1つで、マークアップ言語群を構築するために使われています。

  • デザイン

    86questions

    プログラミングでのデザインとは、プログラムの構成や、使用の信頼性・持続性・正確性・利便性の目標達成にはどうするのがベストなのか特定の選択を行うことです。