最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 彈出軟鍵盤所遇到的坑及解決方法

 更新時間:2017年01月24日 16:21:42   作者:struggle323  
這篇文章主要介紹了Android 彈出軟鍵盤所遇到的坑及解決方法,非常不錯,具有參考借鑒價值,需要的朋友參考下

demo下載

重要代碼:

//1、此layout作為最外層的layout;
//2、設(shè)置需要調(diào)整的view: setAdjustView(View view);
//3、如果需要控制輸入框的顯示與隱藏,可以實現(xiàn)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();
        }
      }
    });
  }
  /**
   * 需要調(diào)整的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(…)來設(shè)置全屏;

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

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

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

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

5、通過setAdjustView(View view)來設(shè)置需要調(diào)整的view;

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

非全屏模式

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

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

3、通過setAdjustView(View view)來設(shè)置需要調(diào)整的view;

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

以上所述是小編給大家介紹的Android 彈出軟鍵盤所遇到的坑及解決方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

最新評論

蒲城县| 中超| 苍溪县| 平昌县| 赤城县| 红原县| 吉木萨尔县| 理塘县| 凌海市| 湾仔区| 武邑县| 台安县| 阿克苏市| 建湖县| 赣州市| 新干县| 桦南县| 保靖县| 德令哈市| 和龙市| 专栏| 黄石市| 新疆| 固安县| 禄劝| 三都| 泗阳县| 汾西县| 大竹县| 原阳县| 栾城县| 巴东县| 藁城市| 阿拉善左旗| 韩城市| 东阳市| 怀化市| 新密市| 南华县| 江口县| 马边|