我将一个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"
答案 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。