如何避免窗口视图来过键盘?

时间:2016-03-30 10:11:52

标签: android android-windowmanager

我在底部有窗口视图,当我点击任何编辑文本时,键盘打开但在窗口视图下方(Windowview来自键盘)。 尝试使用adjustPan,adjustResize。 尝试使用show会根据键盘可见性隐藏视图,但它会提供安全例外。

 mTabParams = new WindowManager.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.TYPE_SYSTEM_ALERT |
                WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY,
                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL |
                        WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSPARENT);

        mTabParams.format = PixelFormat.TRANSLUCENT;
        mTabParams.height = TAB_BAR_HEIGHT;
        mTabParams.gravity = Gravity.BOTTOM;
        mWindowmanager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
        mWindowmanager.addView(mTabbarLayout, mTabParams);

1 个答案:

答案 0 :(得分:0)

这对我有用:

#include <random>
#include <algorithm>
#include <iterator>
#include <vector>

int main()
{
    std::random_device rd;
    std::mt19937 g(rd());

    int Orignumbers[100];

    //Generate the random numbers without duplicates
    for(int i =0; i < 100; i++) {
        Orignumbers[i] = i+1;
    }
    std::shuffle(Orignumbers, Orignumbers+100, g);

    // Arrays for the divide and conquer method
    int NumbersA   [25]     = {};
    int NumbersB   [25]     = {};
    int NumbersC   [25]     = {};
    int NumbersD   [25]     = {};


    for(int i = 0; i < 25; i++) {
        NumbersA[i] = Orignumbers[i];
        NumbersB[i] = Orignumbers[i+25];
        NumbersC[i] = Orignumbers[i+50];
        NumbersD[i] = Orignumbers[i+75];
    }

    // Print out the random numbers
    for(int i = 0; i < 100; i++)
    {
        cout << Orignumbers[i] << " , ";
    }

}

这会将添加的视图放在键盘后面。