6

「android:windowSoftInputMode="adjustPan" を使用して自動的にオフセットできることはわかっていますが、特別な目的のためにソフトウェア キーボードの高さを取得したいのです。

ここにも同様のトピックがあることがわかりました:ソフト キーボードの寸法の取得。しかし、明らかに、それは普遍的な解決策ではありません。

ソフトキーボードの高さを取得する一般的な方法または組み込みの方法はありますか? (または、現在のカーソル位置とソフトウェアキーボードのトップ位置の間のオフセット値を取得するにはどうすればよいですか?)

本当にありがとう

4

2 に答える 2

0

ここで私の解決策、それもハッキーですが、問題を解決します。

  1. 画面の下部に背景が透明な一時的なビューの場所があります。
  2. android:windowSoftInputMode="adjustResize"@bill が示唆するように、マニフェストのアクティビティ タグにフラグを追加しました。
  3. 今、本編はonGlobalLayout(). y axisそこで、一時ビューと高さの差を計算しますroot view

    final View view = findViewById(R.id.base);
    view.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
    
    @Override
    public void onGlobalLayout() {
    
        int rootViewHeight = view.getRootView().getHeight();
        View tv = findViewById(R.id.temp_view);
        int location[] = new int[2];
        tv.getLocationOnScreen(location);
        int height = (int) (location[1] + tv.getMeasuredHeight());
        deff = rootViewHeight - height;
        // deff is the height of soft keyboard
    }
    });
    
于 2014-05-06T07:04:49.920 に答える