2012-07-02 15 views
56

問題の解決策はどこからでも検索しましたが、回答が見つかりません。ここに問題がある。編集テキストをクリックすると内容が表示されます

私はエディットテキスト(検索バー)でクリックしたときに、この

Image is here

は、今私は、次のソフト

Image is here

が起こるしたいように見えるレイアウトを持っていますキーボードは基本的に画面全体の内容を押し上げる必要があり、検索バーが最上部にあり、そのリストビューがその下にあるので、コンテンツが検索されると結果が表示されます。マニフェストでandroid:windowSoftInputMode="adjustPan"Activityに設定しようとしましたが、これは機能しませんでした。フラグメントを含むメインレイアウトのメインコンテナとしてスクロールビューを設定しましたが、それも機能しませんでした。私はリストビューへのヘッダーとして編集テキスト(検索バー)を追加しようとしましたが、これも機能しませんでした。キーボードが編集テキストを押し上げるたびにリストビューをカバーするたびにこの仕事をする方法はありますか?

答えて

67

実際にあなたの全体のレイアウトパンアップをしたい場合に使用すべきであるより:

SOFT_INPUT_ADJUST_PAN

意味:

getActivity().getWindow().setSoftInputMode(
       WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN); 

これは、閉じた状態のキーボードを続け、開いたとき、それはあなたをプッシュします全体の活動をアップ。

+2

あなたは素晴らしいです! – Eenvincible

+0

しかし、編集ボックスの最初の文字を入力すると、レイアウトが押し上げられます。 – Nivedh

+4

'adjustpan'は正常に動作していますが、私はまた、キーボードの下にあるボタンを(これは基本的に' adjustResize'を使って実現しますが、全体のレイアウトを上に押し上げることはありません。最終的にデータを入力しているテキストボックスを隠します。誰でも手助けができますか? – driftking9987

7

マニフェストファイルにandroid:windowSoftInputMode="adjustResize"をお試しください。

あなたはandroid:windowSoftInputMode="adjustResize|adjustPan"を行う必要があるかもしれません...私は本当に上のテストするために、あなたのセットアップに匹敵する何かを持っていない...

あなたの問題は、(adjustPanためのドキュメントから、重点鉱山)このbecasueです:

ソフトのためのスペースを確保するために、アクティビティのメインウィンドウのサイズが変更されていません。 現在のフォーカスは、キーボードやユーザー によって隠されないようではなく、ウィンドウの内容が を自動的にパンされ、常に彼らはあなたのリストがbecasue隠されている、ということを考えると

を入力しているかを見ることができます一番上のEditTextにフォーカスがあります。私が現在考えることのできる唯一のことは、それがリストの下にあるようにEditTextを移動することです。その後、押し上げると、リストはEditTextの上に表示されます。

+0

返信いただきありがとうございます。私はそれを試みたが、うまくいかなかった。サイズ変更は機能しますが、画面の上部にコンテンツが詰まってしまい、実際には悪く見えます。また、adjustResizeを使用するとリストビューのコンテンツは表示されません。 – Neil

+0

本当の解決策ではなく、解決策として私の答えを更新しました。 – Barak

+0

こんにちはBarak私はリストビューの下にEditTextを移動しようとしましたが、これはうまくいきませんでした。私もそれはすべきだと思ったが、それは単にリストビュー上にEditTextをプッシュし、リストビューのすべてのコンテンツを隠した。 – Neil

3

レイアウトを自動的に変更するソリューションが見つからず、ハックする必要がありました。私はキーボードが開かれた時を検出するために私の主な活動にhereというコードを使用しました。私は、キーボードを開いたときに上位2つのフラグメントを隠すメソッドを呼び出すコードを追加しました。これは本当に私がしたいことではありませんが、それは動作します。

8

私は同様の問題に直面しましたが、解決策は簡単でした。

アクティビティのテーマがフルスクリーン@android:style/Theme.Holo.NoActionBar.FullScreenに設定されている場合、キーボードはコンテンツを押し上げていませんでした。

アクティビティを@android:style/Theme.Holo.NoActionBarに変更した後、キーボードはアクティビティの内容を上に押しています。

+0

ありがとう!とにかくそれをフルスクリーンにする方法を知っていますか? –

+0

私はフルスクリーンを望んでいて、アクティビティのコンテンツも上がってはいけません。どんな解決策ですか? – Nikita

19

これは、[編集]テキストを上に移動し、最後までスクロールするために[フラグメントクラス]で使用できます。

フラグメントアクティビティのテーマがフルスクリーンでない場合は、これが確実に機能します。

願っています。

+0

これはうまくいきますが、編集ボックスの最初の文字を入力するとレイアウトが押し上げられます。の解き方?あなたが知っているかどうか知らせてください – siva

+0

@siva同じ問題に直面している私も – Nivedh

+0

働いた!ありがとうございます – dearvivekkumar

10

これは私のために働いた。

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 
1

私は私のEditTextログインのためにこれを使用します。

this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN|WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); 

この方法についていくつかの注意事項:getActivity()は必ずしも好ましくないとして

thisは、コンテキストに言及している

.SOFT_INPUT_STATE_HIDDEN //for default hidden state when activity loads 

.SOFT_INPUT_STATE_VISIBLE //for auto open keyboard when activity loads 

毎回動作します!

9

は私のために働いこの

android:windowSoftInputMode="adjustResize" 

を試してみてください。

3

これはちょうど活動とマニフェストにそれを宣言し、フラグメントのために、私の仕事:

android:windowSoftInputMode="adjustPan" 

グッドラック!

+0

私はedittextビューがあるscrollviewの中にいくつかのscroolviewと相対レイアウトを持っています。これは間違いなく機能します。私はすべての編集文にそれを入れなければならないと思っていましたが、これはとてもシンプルです。 ♥ –

0

誰もが、まだこの問題に直面している場合:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:id="@+id/view" 
    **android:fitsSystemWindows="true"** 
    android:layout_height="match_parent"> 

があなたのレイアウトに追加します。

android:fitsSystemWindows="true" 

私はこれがあなたの問題を解決を願って - それは私のために働きました。