我有一个对话式活动,显示在Android应用程序的主要活动中。如何让背景变得半透明?不透明,但半透明 - 比如70%不透明。我已尝试将此主题应用于活动:
<style name="Theme.Transparent" parent="android:Theme">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowIsFloating">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
以及此处的几个变体,但对话框活动仍显示100%不透明。此外,活动本身的布局xml(以及显示在其上的元素)指定“#70000000”的背景。
答案 0 :(得分:3)
对于完全透明的对话框,您可以使用:
步骤1&gt;在'res'下的'values'文件夹中创建一个colors.xml文件,并添加以下行..
<drawable name="transparent">#00000000</drawable>
步骤2&gt;在'res'下的'values'文件夹中创建一个styles.xml文件,然后创建以下行......
<style name="Transparent">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">
@android:style/Animation.Translucent
</item>
<item name="android:windowBackground">@drawable/transparent</item>
<item name="android:windowNoTitle">true</item>
<item name="android:colorForeground">#fff</item>
</style>
(我猜标签和属性是不言自明的......)
步骤3&gt;实际上,就是........................
让我们将其添加到对话框中......
步骤4&gt;创建一个包含以下行的类......
public class DialogBox extends Dialog {
public DialogBox(Context context, int theme) {
super(context, theme);
setContentView(R.layout.dialog);
okButton = (Button) findViewById(R.id.dialog_OkButton);
setListeners();
}
}
(确保为对话框创建布局)
步骤5&gt;接下来创建一个活动类,如下所示......
public class T_Temp extends Activity {
private DialogBox dialog;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
dialog = new DialogBox(this, R.style.Transparent);
dialog.show();
}
}
或者您可以使用它来使对话框具有吸引力以添加模糊效果....
请检查一下:透明度接近30%......
dialog = new AlertDialog.Builder(WordCube.this)
.setTitle(WordCube.this.getResources().getString(R.string.app_name))
.setMessage(s)
.setIcon(R.drawable.logo)
.setPositiveButton(R.string.btn_close, null)
.show();
下面显示了添加模糊和消除背景变暗所需的代码(因为我认为当背景光线充足时模糊看起来更好)。
view plaincopy to clipboardprint?
WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
lp.dimAmount=0.0f;
dialog.getWindow().setAttributes(lp);
dialog.getWindow().addFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND);