安卓键盘面板冲突解决方案 JKeyboardPanelSwitch

Apache-2.0
Java 查看源码»
Android
2016-03-24
诺克萨斯

JKeyboardPanelSwitch是一款用于Android键盘面板冲突,布局闪动处理方案的软件。

效果对比

如何使用

build.gradle中:

compile 'cn.dreamtobe.kpswitch:library:1.3.0'

对应的Activity,在Manifest中配置android:windowSoftInputMode=adjustResize:

<manifest
  ...>
  <application
    ...>
    <activity
      android:name=".activity.ChattingActivity"
      android:windowSoftInputMode=adjustResize"/>
      ...
  </application>
  ...
</manifest>

在面板页面的layout中:

<?xml version="1.0" encoding="utf-8"?>
<cn.dreamtobe.kpswitch.widget.CustomRootLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <!-- 布局内容 -->
    ...
    <cn.dreamtobe.kpswitch.widget.PanelLayout
        android:id="@+id/panel_root"
        android:layout_width="fill_parent"
        android:layout_height="@dimen/panel_height"
        android:visibility="gone">
        <!-- 面板内容 -->
        ...
    </cn.dreamtobe.kpswitch.widget.PanelLayout>
</cn.dreamtobe.kpswitch.widget.CustomRootLayout>

在Activity中:

...
private PanelLayout mPanelLayout;
// 任何的可以用于收键盘输入的View,可有可无,用于显示keyboard的时候传入
private EditText mSendEdt;
@Override
public void onCreate(Bundle saveInstanceState){
    ...
    mPanelLayout = (PanelLayout)findViewById(R.id.panel_root)
}
...
// Keyboard与面板相互切换
public void switchPanel(){
    if (mPanelLayout.getVisibility() == View.VISIBLE){
        KeyboardUtil.showKeyboard(mSendEdt);
    } else {
        KeyboardUtil.hideKeyboard(mSendEdt);
        showPanel()
    }
}
public void hidePanel(){
    mPanelLayout.setVisibility(View.GONE);
}
public void showPanel(){
    mPanelLayout.setVisibility(View.VISIBLE);
}
...
// 如果需要处理返回收起面板的话
@Override
public boolean dispatchKeyEvent(KeyEvent event){
    if (event.getAction() == KeyEvent.ACTION_UP &&
            event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
        if (mPanelLayout.getVisibility() == View.VISIBLE) {
            hidePanel();
            return true;
        }
    }
    return super.dispatchKeyEvent(event);
}
的码云指数为
超过 的项目
加载中

评论(0)

暂无评论

暂无资讯

暂无问答

Android开发辅助工具类 Utils 汇总

包括了各种工具类、辅助类、管理类等 Awesome_API: https://github.com/marktony/Awesome_API/blob/master/Chinese.md 收集中国国内可用API commons-lang: https://github.com/apache/commo...

2018/05/08 17:48
50
0
Android弹出键盘布局闪动原理和解决

Android 弹出键盘,仿造微信。

2016/03/18 22:43
994
1
Android键盘面板冲突 布局闪动处理方案

Android键盘面板冲突 布局闪动处理方案 原文: http://blog.dreamtobe.cn/2015/09/01/keyboard-panel-switch/ 之前有写过一篇核心思想: Switching between the panel and the keyboard in W...

2016/05/13 19:08
12
2
fir.im Weekly - 如何打造 Github 「爆款」开源项目

最近 Android 转用 Swift 的传闻甚嚣尘上,Swift 的 Github 主页上已经有了一次 merge>>[「Port to Android」](https://github.com/apple/swift/pull/1442#issue-136322482),让我们对 Swif...

2016/04/19 11:30
53
1

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部