您好我必须将我主题中对话框的昏暗颜色变为白色,以便通过设置layoutParams.dimAmount = 0.5f;我可以在对话框背景中模糊白色 我正在使用
<style name="MyDialog" parent="@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowBackground">@color/dialog_dim_background</item>
</style>
以下参考文献
How do I create a transparent Activity on Android?
Custom screen dim with Dialog
答案 0 :(得分:2)
这是一个非常古老的问题,但我想补充一点。我遇到了同样的问题,谷歌搜索了很多。然后提出了我自己的解决方案。
首先,我用这个
删除了昏暗<View
android:id="@+id/shade"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/primaryShadow"
android:visibility="invisible"/>
然后我打开了我的布局(它是 RelativeLayout )并将此视图放在作为最后一个元素
View.VISIBLE
背景颜色是您要用作暗淡颜色的颜色。如您所见,它在创建时是不可见的。因此,在启动对话框View.INVISIBLE
之前,您需要在Activity中找到它并设置它的可见性。取消对话框后,再次将其设置为 public class MyTextBox : TextBox
{
static MyTextBox()
{
DefaultStyleKeyProperty.OverrideMetadata(typeof(MyTextBox),
new FrameworkPropertyMetadata(typeof(MyTextBox)));
TextProperty.OverrideMetadata(typeof(MyTextBox), new FrameworkPropertyMetadata(new PropertyChangedCallback(TextPropertyChanged)));
}
public MyTextBox()
{
PreviewTextInput +=MyTextBox_PreviewTextInput;
}
void MyTextBox_PreviewTextInput(object sender, System.Windows.Input.TextCompositionEventArgs e)
{
var tb = sender as MyTextBox;
if (tb == null) return;
if (IsMasking(tb) && !Regex.IsMatch(e.Text, Mask))
{
e.Handled = true;
}
}
private static bool IsMasking(MyTextBox tb)
{
if (string.IsNullOrWhiteSpace(tb.Mask)) return false;
try
{
new Regex(tb.Mask);
}
catch (Exception)
{
return false;
}
return true;
}
#region Mask Dependancy property
public string Mask
{
get { return (string)GetValue(MaskProperty); }
set { SetValue(MaskProperty, value); }
}
// Using a DependencyProperty as the backing store for Mask. This enables animation, styling, binding, etc...
public static readonly DependencyProperty MaskProperty =
DependencyProperty.Register("Mask", typeof(string), typeof(MyTextBox), new PropertyMetadata(string.Empty));
#endregion
}
。就是这样。
答案 1 :(得分:2)
我知道这是一个非常古老的问题,但这肯定会对使用AppCompatActivity或ActionBarActivity的人有所帮助。如果您正在为您的活动设置对话框或说出DialogActivity,那么以下内容也可以使用!
dialog = new Dialog(ActivityName.this);
dialog .setCancelable(false);
dialog .setContentView(R.layout.dialog_layout);
Window window = dialog.getWindow();
if(window != null){
window.addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
window.setDimAmount(0.5f);
//If you are setting a dialog activity
DisplayMetrics displayMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
Double dialogWidth = displayMetrics.widthPixels * 0.50;
window.setLayout(dialogWidth.intValue(),
WindowManager.LayoutParams.WRAP_CONTENT); //Setting it cover half of the screen width
}
dialog.show();
在您关闭对话框之前,
dialog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
dialog.dismiss();
//如果要设置对话框活动,请在styles.xml中创建样式:
<style name="MyTheme" parent="@style/Theme.AppCompat.Light.Dialog">
<item name="windowActionBar">false</item>
<item name="windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
在你的Manifest中,设置主题:
<activity android:name=".view.POSSelectCustomerDialogActivity"
android:theme="@style/MyTheme"
android:windowSoftInputMode="stateAlwaysHidden|adjustResize"/>
答案 2 :(得分:0)
好的,我就是这样做的&#34;我不知道这些会如何与模糊标志一起表现出来#34;
代码段
Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.dailog_layout);
dialog.getWindow().setBackgroundDrawable(
new ColorDrawable(0));
dialog.getWindow().setLayout(LayoutParams.FILL_PARENT,
LayoutParams.FILL_PARENT);
dialog.getWindow().clearFlags(
WindowManager.LayoutParams.FLAG_DIM_BEHIND);
祝你好运