我正在尝试在屏幕上显示一个自定义的 DialogFragment 刷新,宽度为 wrap_content。我已经差不多了,但不完全。
请注意,对话框的右侧超出了内容的宽度。我在主要内容区域的背面添加了红色以区分两者。这使我相信主要内容区域实际上位于另一个我无法到达的最小宽度的层上。在 DialogFragment 的 onResume() 中,如果我调用...
Resources r = getActivity().getResources();
int pixels = (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 72, r.getDisplayMetrics());
LayoutParams params = getDialog().getWindow().getAttributes();
params.width = pixels;
params.x = 0;
getDialog().getWindow().setAttributes(params);
...这会将宽度调整为适当的大小,但我担心由于像素差异,这在所有设备上都不会正确。注意我正在根据显示指标转换 72,但我不确定为什么 72 是正确的宽度,因为我提供的最小图标版本是 drawable-mdip 文件夹中的 48x48px。72x72px 位于 drawable-hdip 文件夹中,我假设它特定于我正在使用的设备......因此其他设备可能需要将此值设置为 48、96、144 等,具体取决于显示指标。
所以我的问题是:为什么这个对话框的右侧被扩展了?如何在不以编程方式将窗口缩小静态值(即 72)的情况下摆脱它?
...这是自定义对话框 xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="5dip"
android:background="@color/red"
android:orientation="vertical" >
<ImageButton
android:id="@+id/sharing_dialog_button_facebook"
android:contentDescription="@string/facebook_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:background="@color/transparent"
android:src="@drawable/facebook_icon"/>
<ImageButton
android:id="@+id/sharing_dialog_button_twitter"
android:contentDescription="@string/twitter_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_gravity="center"
android:background="@color/transparent"
android:src="@drawable/twitter_icon"/>
<ImageButton
android:id="@+id/sharing_dialog_button_tumblr"
android:contentDescription="@string/tumblr_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_gravity="center"
android:background="@color/transparent"
android:src="@drawable/tumblr_icon"/>
<ImageButton
android:id="@+id/sharing_dialog_button_foursquare"
android:contentDescription="@string/foursquare_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_gravity="center"
android:background="@color/transparent"
android:src="@drawable/foursquare_icon"/>
<ImageButton
android:id="@+id/sharing_dialog_button_email"
android:contentDescription="@string/email_option"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dip"
android:layout_gravity="center"
android:background="@color/transparent"
android:src="@drawable/mail_icon"/>
</LinearLayout>