如何显示调整键盘上的活动

时间:2013-12-03 12:25:00

标签: android android-layout

我将一个Activity屏蔽为Dialog。 我想在显示键盘时调整活动。

我的布局资源:

RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/transparent">

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:orientation="vertical" >

    <ScrollView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" >
          ...
    </ScrollView>

</LinearLayout>

在我的清单中:

android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"  
android:windowSoftInputMode="adjustResize"

2 个答案:

答案 0 :(得分:3)

Somethimes android:theme =“@ android:style / Theme.Translucent.NoTitleBar.Fullscreen”导致一些问题,窗口没有调整大小。删除它以查看它是否有效,并检查替代方案。

答案 1 :(得分:-1)

在清单中没有任何设置可以实现此目的,您必须在布局结束时为布局添加额外的高度视图(您想要的东西)和宽度0。只需在键盘出现时将其显示即可。要查找键盘状态,请使用此

 int lastDiff = 0; 
 public static boolean keypadopen; 

和你的onCreate()添加这个

 addKeyBoardHandler();

它会将键盘的当前状态设置为boolean keypadopen。如果为true,则添加一个额外的所需高度视图,该视图将向上滚动视图。

private void addKeyBoardHandler()
    {
        final View activityRootView = findViewById(R.id.container);
        activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(new OnGlobalLayoutListener() {
            @Override
            public void onGlobalLayout()
            {
                Rect r = new Rect();
                activityRootView.getWindowVisibleDisplayFrame(r);

                int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top);
                if (lastDiff == heightDiff) return;
                lastDiff = heightDiff;
                System.out.println("Keypad height :"+heightDiff);
                if (heightDiff > 100)
                {
                     keypadopen = true;
                    keypadListner.onKeypadOpen(heightDiff+10);
                }
                else
                {   
                    keypadopen = false;
                    keypadListner.onKeypadOpen(heightDiff+10);

                }
            }
        });

其中container是根视图的id。