有没有一种方法可以配置Android软键盘的高度和宽度?

4
我正在为Android开发一个软键盘,旨在扩展原始8pen键盘(现已停用)。我已经实现了基本结构,现在想让键盘的大小可由用户配置。 是否有一种方法可以配置键盘的高度和宽度? 由于有些人询问了我的代码,以下是一个片段,完整的最新版本可以在此处找到 -> 8Vim
    public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

    /*Logging stuff*/
    int width = View.MeasureSpec.getSize(widthMeasureSpec);
    int height = View.MeasureSpec.getSize(heightMeasureSpec);
    /*Various other Stuff*/
    radius = (0.325f * width) / 2;
    centre = new PointF((width/2),(height/2));
    circle = new Circle(centre, radius);
    // Set the new size because the "onMeasure" contract so specifies
    setMeasuredDimension(width, height);
    Logger.v(this, "onMeasure returns");
}

更新:

我发现InputServiceMethod类有一个名为getMaxWidth()的方法。如果我在负责显示键盘的视图类中将键盘的宽度设置小于这个值,那么键盘右侧的剩余区域会变黑并且不能使用。

我认为如果我在视图类中更改键盘的高度,可能可以实现我想要的效果,但是...是否可以根据用户的需求更改视图的高度?欢迎提供建议/想法/经验。

2个回答

0

你提到的链接是用于检测软键盘是否打开的应用程序,最多只能获取当前键盘的大小,但它并没有说明如何设置它...我的应用程序是一个键盘,并希望动态更改键盘的高度和宽度。 - flide

0

这是你需要的代码,拿去用吧

mRootWindow = getWindow();
mRootView = mRootWindow.getDecorView().findViewById(android.R.id.content);
mRootView.getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
public void onGlobalLayout(){
    Rect r = new Rect();
    View view = mRootWindow.getDecorView();
    view.getWindowVisibleDisplayFrame(r);
    // r.left, r.top, r.right, r.bottom
}
});

1
那么,实际上,我需要配置“Rect r”,它就会显示出来了吗? 据我所读,我不需要在我的视图中搞乱“onMeasure”函数,是吗? - flide
好的,你还没有发布你的代码。这个东西对一个朋友起作用了。 - johnrao07
更新了问题,并添加了代码...不确定这是否有所帮助。 - flide

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接