[英]Listview scrollbars not visible in activity that has the Theme.AppCompat.Dialog theme
[英]Theme.AppCompat.Dialog title padding issues.
当使用Base.Theme.AppCompat.Dialog
作为我的DialogFragment的主题时,我无法将填充应用于整个标题视图。 我可以成功地将paddingBottom
应用于标题文本,但忽略该图标。 图标通过getDialog().setFeatureDrawable(Window.FEATURE_LEFT_ICON, drawable);
应用getDialog().setFeatureDrawable(Window.FEATURE_LEFT_ICON, drawable);
DialogFragment风格
<style name="my_dialog" parent="@style/Theme.AppCompat.Light.Dialog">
<item name="android:windowBackground">@color/NavBarTint</item>
<item name="android:windowTitleStyle">@style/DialogWindowTitle</item>
<item name="android:windowNoTitle">false</item>
<!-- Doesn't apply to icon -->
<item name="drawablePadding">8dp</item>
<item name="colorAccent">@color/NavBarTint</item>
</style>
<style name="DialogWindowTitle">
<!-- Applies to only the text -->
<item name="android:paddingBottom">8dp</item>
<item name="android:textColor">@color/DialogTitleText</item>
<item name="android:textSize">22sp</item>
<item name="android:textColorPrimary">@color/DialogTitleText</item>
</style>
结果是
我知道另一种方法是废弃标题并制作自己的标题,但是我们有很多对话都是从这种风格继承而来的,并且很想知道问题的根源而不是一个解决问题的工具。
谢谢
对不起,我不是英文对话框.PreferredPadding attr dialogPreferredPadding Appcompat.Light.Dilaog默认设置@ dimen / abc_dialog_padding_material 24dp
<style name="my_dialog" parent="@style/Theme.AppCompat.Light.Dialog">
<item name="android:windowBackground">@color/NavBarTint</item>
<item name="android:windowTitleStyle">@style/DialogWindowTitle</item>
<item name="android:windowNoTitle">false</item>
<!-- Doesn't apply to icon -->
<item name="drawablePadding">8dp</item>
<item name="dialogPreferredPadding">0dp</item>
<item name="colorAccent">@color/NavBarTint</item>
</style>
不得不应用一个黑客为棒棒糖后设备(最终删除图标),但我会发布我们使用的。
/**
* This method can be called to add padding
* below an icon if used. New appcompat library introduced
* bug where padding below icon is ignored.
*/
public void applyAppCompatDialogIconPaddingFix() {
if ((Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) && (getView() instanceof ViewGroup)) {
ViewGroup rootView = (ViewGroup) getView();
if (rootView instanceof ScrollView) {
//going to safely assume a child exists...
rootView = (ViewGroup) rootView.getChildAt(0);
if (rootView == null) {
return;
}
}
float padding = ContextUtil.pxFromDp(getContext(), 12f);
View paddingFix = new View(getActivity());
paddingFix.setBackgroundResource(R.color.NavBarTint); //same color as title
if (rootView instanceof LinearLayout) {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, (int) padding);
paddingFix.setLayoutParams(params);
} else if (rootView instanceof RelativeLayout) {
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, (int) padding);
paddingFix.setLayoutParams(params);
} else {
ViewGroup.LayoutParams params = new ViewGroup.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT, (int) padding);
paddingFix.setLayoutParams(params);
}
rootView.addView(paddingFix, 0);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.