我在顯示Fullscreen的自定義DialogFragment時遇到了一些問題。該對話框具有可滾動的內容並具有自動完成文本視圖。打開軟鍵盤時總是調整DialogFragment的大小
最初,對話框以頂部邊距顯示 - 以編程方式設置爲佈局內容頂部的透明視圖。一旦autocompletetextview被關注,這個邊界就會減少到0(這樣就會讓人覺得對話框變成了全屏模式)。此時鍵盤也顯示出來。
當前,鍵盤減小了對話框的大小,並且對話框中的按鈕在鍵盤上方向上移動。這就產生了一個問題,因爲一旦autocompletetextview失去焦點,對話框將被調整大小,並且由於鍵盤調整大小,還會創建一個閃爍: 它們的鍵盤被隱藏 - >對話框被移動到底部 - >對話框的大小調整到全屏 - >對話框resisez到初始大小
當前創建的對話框的:
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
if (!hasTitle()) {
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
}
// the content
//final RelativeLayout root = new RelativeLayout(getActivity());
//root.setLayoutParams(
// new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
//dialog.setContentView(root);
if (position != null) {
WindowManager.LayoutParams windowParams = dialog.getWindow().getAttributes();
windowParams.x = position.x;
windowParams.y = position.y;
dialog.getWindow().setAttributes(windowParams);
} else {
dialog.getWindow().setLayout(WindowManager.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
}
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(hasTitle() ? Color.WHITE : Color.TRANSPARENT));
dialog.getWindow().setGravity(Gravity.TOP | Gravity.START);
return dialog;
}
這工作部分,因爲對話未完全填滿寬度,它是小了很多。
東西確實解決這個問題,但它創建了另一個問題:
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//setStyle(DialogFragment.STYLE_NO_FRAME, android.R.style.Theme_DeviceDefault_DialogWhenLarge_NoActionBar);
}
但是,這會影響到對話框的背景怎麼樣子,我似乎無法能夠從對話框創建改變方法。
DialogFragment.STYLE_NO_FRAME竅門! –