为什么 Android 5 中的 DialogFragment 上面有额外的 Space?
Why is there additional Space above a DialogFragment in Android 5?
考虑这个 DialogFragment:
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
class TestDialog: DialogFragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.test_dialog, container)
}
}
以及对应的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Test Dialog" />
</LinearLayout>
当我在 Android 5 上 运行 时,"Test Dialog" 字符串上方的对话框中有额外的 Space:
在Android6及以上,没有额外的Space。为什么会出现在Android5?这是 Android 5 的支持库中的错误吗?有什么我可以做的吗?
使用
创建的对话框不会出现此问题
AlertDialog.Builder
你试过在
onCreateView()
上添加这个 getWindow().requestFeature(Window.FEATURE_NO_TITLE);
吗?
编辑
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
View view = inflater.inflate(R.layout.fragment_dialog, container, false);
return view;
}
希望对你有用
考虑这个 DialogFragment:
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
class TestDialog: DialogFragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.test_dialog, container)
}
}
以及对应的布局:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Test Dialog" />
</LinearLayout>
当我在 Android 5 上 运行 时,"Test Dialog" 字符串上方的对话框中有额外的 Space:
在Android6及以上,没有额外的Space。为什么会出现在Android5?这是 Android 5 的支持库中的错误吗?有什么我可以做的吗?
使用
创建的对话框不会出现此问题AlertDialog.Builder
你试过在
onCreateView()
上添加这个 getWindow().requestFeature(Window.FEATURE_NO_TITLE);
吗?
编辑
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
getDialog().getWindow().requestFeature(Window.FEATURE_NO_TITLE);
View view = inflater.inflate(R.layout.fragment_dialog, container, false);
return view;
}
希望对你有用