如何修复我的对话框昏暗和alpha效果

时间:2014-02-08 19:55:40

标签: java android android-layout layout

我希望我的android对话框看起来像:

enter image description here

但是使用这个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" />

导致此对话框:

enter image description here

问题:

(1)按钮的alpha = 1,但似乎是alpha 0.2

(2)对话框bg的alpha = 0.2,但似乎是alpha 1

(3)bg周围应该是dim = 0

3 个答案:

答案 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>

导致以下对话框

enter image description here

答案 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"