Skip to content

键盘处理

xuwhale6 edited this page Oct 13, 2020 · 2 revisions

场景1:

对window整体上移,让当前焦点的输入框位于键盘上方。

-- 相关方法
--默认offset=0。用于view位于键盘上方后,调整偏移量
keyboardOffset(offset)
-- 默认true,点击任何区域,会自动收起键盘。可以指定view忽略收起
keyboardDismiss(auto) 
--监听键盘回调,自定义交互
watchKeyboard(function(isShow, height)
    print("watchKeyboard-->", isShow, height)
end)
--示例
ui {
    --- layout views
    HStack().subs(
        EditTextView()
        .width(200)
        .height(50)
        .bgColor(Color(100, 100, 200, 1))
        .placeholder("请输入")
        .placeholderColor(Color(255, 255, 255, 1))
        .padding(10, 10, 10, 10)
    ).widthPercent(100)
    .height(100)
    .positionType(PositionType.ABSOLUTE)
    .positionBottom(0)
    .bgColor(Color(0x999999))

}.keyboardOffset(10) --默认offset=0。用于view位于键盘上方后,调整偏移量
.keyboardDismiss(true) -- 默认true,点击任何区域,会自动收起键盘。
.watchKeyboard(function(isShow, height)
    --监听键盘回调,自定义交互
    print("watchKeyboard-->", isShow, height)
end)

场景2:

对EditTextView设置,让其位于键盘上方。只有获取焦点的EditTextView,才能上移。

ui {
    HStack().subs(
        EditTextView()
        .width(150)
        .height(50)
        .bgColor(Color(100, 100, 200, 1))
        .placeholder("请输入11")
        .placeholderColor(Color(255, 255, 255, 1))
        .padding(10, 10, 10, 10)
        --为EditTextView设置keyboard
        .keyboard(20)
        ,
        EditTextView().left(10)
        .width(150)
        .height(50)
        .bgColor(Color(100, 100, 200, 1))
        .placeholder("请输入22")
        .placeholderColor(Color(255, 255, 255, 1))
        .padding(10, 10, 10, 10)
    ).widthPercent(100)
    .height(100)
    .positionType(PositionType.ABSOLUTE)
    .positionBottom(0)
    .bgColor(Color(0x999999))
}

场景3:

对目标View设置,让其位于键盘上方。如果目标容器中有子EditText,偏移容器。

ui {
    HStack().subs(
        EditTextView()
        .width(150)
        .height(50)
        .bgColor(Color(100, 100, 200, 1))
        .placeholder("请输入11")
        .placeholderColor(Color(255, 255, 255, 1))
        .padding(10, 10, 10, 10)
        --为EditTextView设置keyboard
        .keyboard(20)
        ,
        EditTextView().left(10)
        .width(150)
        .height(50)
        .bgColor(Color(100, 100, 200, 1))
        .placeholder("请输入22")
        .placeholderColor(Color(255, 255, 255, 1))
        .padding(10, 10, 10, 10)
    ).widthPercent(100)
    .height(100)
    .positionType(PositionType.ABSOLUTE)
    .positionBottom(0)
    .bgColor(Color(0x999999))
    .keyboard(10)
}

场景4:不同View跟随不同的EditTextView偏移。

---  和EditTextView同一id的View互相关联,焦点id的view都跟随对应EditTextView上移,让其位于键盘上方。
keyboard(offset, id)
ui {
    HStack().subs(
        EditTextView()
        .width(150)
        .height(50)
        .bgColor(Color(100, 100, 200, 1))
        .placeholder("请输入11")
        .placeholderColor(Color(255, 255, 255, 1))
        .padding(10, 10, 10, 10)
        --为EditTextView设置keyboard
        .keyboard(20, "et1")
        ,
        EditTextView().left(10)
        .width(150)
        .height(50)
        .bgColor(Color(100, 100, 200, 1))
        .placeholder("请输入22")
        .placeholderColor(Color(255, 255, 255, 1))
        .padding(10, 10, 10, 10)
        .keyboard(50, "et2")
        ,
        Label("111").keyboard(10, "et1").right(10)
        ,
        Label("222").keyboard(10, "et2")
    ).widthPercent(100)
    .height(100)
    .positionType(PositionType.ABSOLUTE)
    .positionBottom(0)
    .bgColor(Color(0x999999))
}

注意⚠️:若发现键盘效果异常,请查看AndroidMainfest.xml中该Activity是否设置键盘模式,如下

<activity
            android:name=".activity.LuaViewActivity"
            android:windowSoftInputMode="adjustPan|stateAlwaysHidden" />
Clone this wiki locally