中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android 開發中怎么實現彈出軟鍵盤

發布時間:2020-11-20 17:05:49 來源:億速云 閱讀:243 作者:Leah 欄目:移動開發

這篇文章將為大家詳細講解有關Android 開發中怎么實現彈出軟鍵盤,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

具體方法如下:

//1、此layout作為最外層的layout;
//2、設置需要調整的view: setAdjustView(View view);
//3、如果需要控制輸入框的顯示與隱藏,可以實現OnInputViewVisibleListener接口;
public class SoftInputAdjustLayout extends RelativeLayout {
  private static final String TAG = SoftInputAdjustLayout.class.getSimpleName();
  private View adjustView;
  public SoftInputAdjustLayout(Context context) {
    this(context, null);
  }
  public SoftInputAdjustLayout(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
  }
  public SoftInputAdjustLayout(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    this.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
      @Override
      public void onGlobalLayout() {
        try {
          Rect r = new Rect();
          getWindowVisibleDisplayFrame(r);
          int heightDiff = getRootView().getHeight() - (r.bottom - r.top);
          if (heightDiff > 100) {
            if (onInputViewVisibleListener != null) {
              onInputViewVisibleListener.onShowInputView();
            }
          } else {
            if (onInputViewVisibleListener != null) {
              onInputViewVisibleListener.onHideInputView();
            }
          }
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    });
  }
  /**
   * 需要調整的view
   *
   * @param adjustView
   */
  public void setAdjustView(View adjustView) {
    this.adjustView = adjustView;
  }
  @Override
  protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
    if (adjustView != null) {
      Rect rect = new Rect();
      getWindowVisibleDisplayFrame(rect);
      int totalHeight = getHeight();
      int nowHeight = rect.bottom - rect.top;
      int keyBoardHeight = totalHeight - nowHeight;
      if (keyBoardHeight > totalHeight / 4) {
        super.onMeasure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(totalHeight, MeasureSpec.EXACTLY));
        LayoutParams params = (LayoutParams) adjustView.getLayoutParams();
        params.bottomMargin = keyBoardHeight;
      } else {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
        LayoutParams params = (LayoutParams) adjustView.getLayoutParams();
        params.bottomMargin = 0;
      }
    } else {
      super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
  }
  private OnInputViewVisibleListener onInputViewVisibleListener;
  public void setOnInputViewVisibleListener(OnInputViewVisibleListener listener) {
    onInputViewVisibleListener = listener;
  }
  public interface OnInputViewVisibleListener {
    void onShowInputView();
    void onHideInputView();
  }
}

備注:

全屏模式:

1、通過style或者setFlags(…)來設置全屏;

2、AndroidManifest.xml中activity設置:android:windowSoftInputMode=”adjustResize”;

3、此layout必須作為布局的最外層layout;

4、一定要在布局中添加一個view,如下:

 <!--此view用于獲取焦點,當軟件盤彈出時,根據此view來彈出,而此view在最頂部,且大小為0,所以軟件盤彈出,不會把背景頂上去-->
  <View
    android:layout_width="0px"
    android:layout_height="0px"
    android:focusable="true" 
android:focusableInTouchMode="true" />

5、通過setAdjustView(View view)來設置需要調整的view;

6、在全屏模式下,輸入框開始是未顯示的,直到彈出軟鍵盤,才會顯示輸入框。因為如果輸入框一開始就顯示,那軟鍵盤就會根據輸入框來彈出,且輸入框在底部,那就可能造成把整個view頂上去。所以這時我們應該實現OnInputViewVisibleListener這個接口來控制輸入框的顯示與隱藏。

非全屏模式

1、AndroidManifest.xml中activity設置:android:windowSoftInputMode=”adjustResize”;

2、此layout必須作為布局的最外層layout;

3、通過setAdjustView(View view)來設置需要調整的view;

4、如果需要控制輸入框的顯示與隱藏,就實現OnInputViewVisibleListener這個接口。

關于Android 開發中怎么實現彈出軟鍵盤就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嘉祥县| 黔东| 大埔区| 福贡县| 汶上县| 清徐县| 迁西县| 孟州市| 布尔津县| 钟山县| 达拉特旗| 恩施市| 噶尔县| 普洱| 翼城县| 高密市| 枣强县| 洪泽县| 朝阳市| 太谷县| 台安县| 缙云县| 伊金霍洛旗| 邯郸县| 湾仔区| 汉源县| 乐平市| 卢湾区| 大连市| 余庆县| 长葛市| 西盟| 石城县| 黄大仙区| 五莲县| 囊谦县| 保康县| 贡山| 集贤县| 中江县| 仲巴县|