我希望我的android对话框看起来像:
但是使用这个xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:alpha="0.20"
android:backgroundDimAmount="0.0">
<View
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="0.1" />
<Button
android:id="@+id/socialBtn1"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:scaleType="fitXY"
android:src="@android:color/tab_indicator_text"
android:text="@string/fb_share" />
导致此对话框:
问题:
(1)按钮的alpha = 1,但似乎是alpha 0.2
(2)对话框bg的alpha = 0.2,但似乎是alpha 1
(3)bg周围应该是dim = 0
答案 0 :(得分:3)
(1)按钮的alpha = 1,但似乎是alpha 0.2
这是默认按钮背景。你必须使用button的android:background
属性给出特定的背景。我不认为android:src="@android:color/tab_indicator_text"
适用于按钮。该属性用于ImageView
。
(2)对话框bg的alpha = 0.2,但似乎是alpha 1
你确定对话框背景的alpha值是0.2吗?通过查看设计,我猜alpha值应该是0.7 - 0.8
,结果是部分透明度。而且你只设置alpha。您还需要指定背景颜色。我建议使用dialog.getWindow().setBackgroundDrawable
方法动态给出alpha值。
示例:
final Dialog dialog = new Dialog(MainActivity.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dialog);
Drawable d = new ColorDrawable(Color.BLACK);
d.setAlpha(178); //alpha 0.7 (0-250 range)
dialog.getWindow().setBackgroundDrawable(d);
dialog.show();
对话框布局:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="500dp"
android:backgroundDimAmount="0.0"
android:gravity="center"
android:orientation="vertical" >
<Button
android:id="@+id/socialBtn1"
android:layout_width="wrap_content"
android:layout_height="60dp"
android:scaleType="fitXY"
android:background="#0066FF"
android:layout_marginTop="10dp"
android:text=" Facebook " />
<View
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="0.1" />
</LinearLayout>
导致以下对话框
答案 1 :(得分:0)
你应该试试
Dialog mdialog =new Dialog(this);
Drawable d = new ColorDrawable(Color.BLACK);
d.setAlpha(55);
mdialog.getWindow().setBackgroundDrawable(d);
答案 2 :(得分:0)
您必须设置背景图像或颜色才能获得所需的效果。
例如,如果使用颜色,则可以通过在Linearlayout属性中添加以下行来实现对话的半透明背景。
android:background="#B2000000"
前两位数决定透明效果。
格式为 #AARRGGBB ,其中AA是alpha通道,RR是红色通道,GG是绿色通道,BB是蓝色通道。计算AA乘以%不透明度为255.例如,30%透明度,即70%不透明度:255 * 0.7 = 178
,以十六进制B2表示。所以对于黑色半透明背景,颜色来到#B2000000
类似于使用实心按钮颜色设置颜色或自定义背景图像。
android:background="@drawable/ic_button_bg"