5

この問題の複数の投稿を読みましたが、解決策は を使用することでしたOnGlobalLayoutListener。ここでの問題は、私のアプリケーションがマニフェストで次のように宣言していることです:

android:theme="@android:style/Theme.NoTitleBar.Fullscreen"

そのため、入力モードの調整が機能せず、使用できませんOnGlobalLayoutListener

ソフト入力が表示されている/なくなったというイベントを取得する方法と、現在のレイアウトを調整するために、入力の高さも取得する必要がありますbottomMargin

ありがとう。

4

3 に答える 3

0

これを使用して、softInput の可視性を検出します。これを試して :

public boolean isKeyBoardVisible;
    int previousHeightDiffrence = 0;

    public void checkKeyboardHeight(final View parentLayout) {

        parentLayout.getViewTreeObserver().addOnGlobalLayoutListener(
                new ViewTreeObserver.OnGlobalLayoutListener() {

                    @Override
                    public void onGlobalLayout() {

                        Rect r = new Rect();
                        parentLayout.getWindowVisibleDisplayFrame(r);

                        int screenHeight = parentLayout.getRootView()
                                .getHeight();
                        int heightDifference = screenHeight - (r.bottom);

                        if (previousHeightDiffrence - heightDifference > 50) {

                            // Keyboard is not visible
                        }
                        if (previousHeightDiffrence - heightDifference < -50) {

                            // Keyboard Visible
                        }

                        previousHeightDiffrence = heightDifference;
                        if (heightDifference > 100) {

                            isKeyBoardVisible = true;

                        } else {

                            isKeyBoardVisible = false;

                        }

                    }
                });

    } 

ここで、parentLayout はアクティビティの一番上のレイアウトであり、heightDifference はキーボードが表示されている場合のキーボードの高さです.....

于 2013-05-15T12:38:00.697 に答える
0

これを試して:

レイアウト:

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <MyView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
</RelativeLayout>

次に、MyView を実装します

public class MyView extends View
{
     public static int ScreenHeight;

     @Override
     public function onDraw(Canvas canvas){
          if(ScreenHeight != canvas.getHeight()){
              // this is your event
          } 
          ScreenHeight = canvas.getHeight();

     }
}

ScreenHeight、あなたが探しているものです。

于 2013-05-16T12:34:47.443 に答える