2016-07-26 9 views
5

私のアプリでは、私はMapViewEditTextFloatingActionButton(FAB)を使用しています、と私はEditTextがクリックされたときに、Fabはキーボードの上に移動したいです。私はmanifestandroid:windowSoftInputMode="adjustResize"を設定するファブでうまく動作しますが、それはまた、バックグラウンドである私のマップのサイズを変更し、それがリサイズは本当に醜い効果を与えることがわかりました。ここでFloatingActionButton

は私のレイアウトです:

<CoordinatorLayout> 

    <MapView/> 

    <RelativeLayout> 

     <EditText/> 

     other views ... 

    </RelativeLayout> 

    <FloatingActionButton/> 

    other views ... 

</CoordinatorLayout> 

私はそれを使用せずに「adjustResize」効果を得ることができる方法上の任意のアイデア?または、「adjustResize」を維持しながら、ビューをサイズ変更から除外する方法は?

は、いくつかの研究の後、私はルートに GlobalLayoutListenerを追加することにより、キーボードを扱うことになった

android:fitsSystemWindows="true" 

プロパティ

答えて

3

1

は、レイアウトXMLでこのルートビューを試してみてください、事前にありがとう私のレイアウトのビュー、およびこのルートビューの現在の可視部分の四角形を描きます。
一部のデバイスは、ウィンドウの可視部分に含まれているように見えるキーボード上記の提案のバーを持っているので、私はまた、キーボードの実際の高さに25dpを追加しました。
if条件はbottomSheetが展開されたときに任意の翻訳を阻止することがあります。

private void handleKeyBoardApparition() { 
    root.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
     @Override 
     public void onGlobalLayout() { 
      Rect r = new Rect(); 

      root.getWindowVisibleDisplayFrame(r); 

      int heightDiff = root.getBottom() - r.bottom; 

      int suggestionsBarHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP,25,getActivity().getResources().getDisplayMetrics()); 

      if(!bottomSheetIsVisible){ 
       fabSearch.setTranslationY(-(heightDiff + suggestionsBarHeight)); 
      } 

     } 
    }); 
} 
+0

それは働いていません –

関連する問題