我有一个警告对话框,其中以编程方式添加了正面和负面按钮。在对话框布局中,还有两个按钮,位于AlertDialog的本机按钮上方。
当这两者紧挨着时,我意识到在这个对话框中,原生正/负/中性按钮的权重不同。它们的文本内容决定了它们的水平权重,而不是每个占用对话框的50%(如果有3个按钮则为33%)。因此,在我的情况下,负片按钮的文本比正面按钮的文本长,我们得到的内容看起来就像我上面发布的图像。
我找不到办法解决这个问题,有没有人有想法?
谢谢!
请求的XML:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TextView android:id="@+id/rcd_msg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_margin="8dp"
android:text="@string/rating_dialog_text"
android:textSize="14dp"
android:textColor="@android:color/white"
android:gravity="center"/>
<RatingBar android:id="@+id/rcd_rating_bar"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/rcd_msg"
android:layout_margin="8dp"
android:paddingBottom="10dp"
android:numStars="5"
android:rating="0"
android:layout_centerHorizontal="true"/>
<RelativeLayout android:layout_height="56dp"
android:layout_width="match_parent"
android:layout_below="@id/rcd_rating_bar">
<LinearLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<RelativeLayout android:id="@+id/rcd_image"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:background="@color/selectable_transparent"
android:layout_weight="1">
<TextView android:id="@+id/rcd_image_text"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_centerInParent="true"
android:paddingLeft="0dp"
android:gravity="center"
android:text="@string/add_image"
android:textColor="@android:color/white"
android:textSize="16sp"
android:clickable="true"/>
<ImageView android:id="@+id/rcd_image_img"
android:layout_height="32dp"
android:layout_width="32dp"
android:layout_centerVertical="true"
android:layout_margin="8dp"
android:layout_toLeftOf="@id/rcd_image_text"
android:scaleType="centerInside"
android:src="@android:drawable/ic_menu_camera"/>
</RelativeLayout>
<RelativeLayout android:id="@+id/rcd_comment"
android:layout_width="0dp"
android:layout_height="fill_parent"
android:background="@color/selectable_transparent"
android:layout_weight="1">
<TextView android:id="@+id/rcd_comment_text"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:layout_centerInParent="true"
android:paddingRight="6dp"
android:gravity="center"
android:text="@string/add_comment"
android:textColor="@android:color/white"
android:textSize="16sp"
android:clickable="true"/>
<ImageView android:id="@+id/rcd_comment_img"
android:layout_height="32dp"
android:layout_width="32dp"
android:layout_centerVertical="true"
android:layout_margin="4dp"
android:layout_toRightOf="@id/rcd_comment_text"
android:scaleType="centerInside"
android:src="@drawable/ic_menu_comment"/>
</RelativeLayout>
</LinearLayout>
<LinearLayout android:layout_width="1dp"
android:layout_height="38dp"
android:layout_centerHorizontal="true"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:layout_margin="10dp"
android:background="@color/transparent_white" />
</RelativeLayout>
</RelativeLayout>
答案 0 :(得分:9)
想出一个解决方案......不知道为什么我之前没有想到它。
我执行以下操作:
mRateConcertDialog.setOnShowListener(new OnShowListener() {
@Override
public void onShow(DialogInterface d) {
Button posButton = mRateConcertDialog.getButton(DialogInterface.BUTTON_POSITIVE);
Button negButton = mRateConcertDialog.getButton(DialogInterface.BUTTON_NEGATIVE);
LayoutParams posParams = (LayoutParams) posButton.getLayoutParams();
posParams.weight = 1;
posParams.width = LayoutParams.MATCH_PARENT;
LayoutParams negParams = (LayoutParams) negButton.getLayoutParams();
negParams.weight = 1;
negParams.width = LayoutParams.MATCH_PARENT;
posButton.setLayoutParams(posParams);
negButton.setLayoutParams(negParams);
}
});
基本上,您必须在显示对话框后操纵按钮的大小。因此,创建一个onShowListener,你可以这样设置权重和宽度。感谢您的评论,我希望这可以帮助将来的某个人。