标签:android listener message builder public
今天遇到一个大难题哦,不过有大牛一眼就瞄出来了,然后就解决了,AlertDialog和Dialog自定义后圆角的处理,如果你跟我一样没有看到这些细节的话就栽了,用AlertDialog不能使得圆角背景透明化,所以要用Dialog处理才行,也就是下面的方法。
Dialog:
private static Dialog mDialog;
// 加载gridview中的item的xml方法
public static View getView(Context context, int layoutId) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(layoutId, null);
return layout;
}
/**
* 显示自定义对话框
*
* @param context
* @param message
* @param listener
*/
public static void showDialog(final Context context, String message,
final IAlertDialogButtonListener listener) {
View dialogView = null;
// Dialog.Builder builder = new Builder(context,
// R.style.Theme_Transparent);
mDialog = new Dialog(context, R.style.Theme_Transparent);
dialogView = getView(context, R.layout.dialog_view);
Button btn_ok = (Button) dialogView.findViewById(R.id.btn_ok);
Button btn_cancel = (Button) dialogView.findViewById(R.id.btn_cancel);
TextView txt_dailog_message = (TextView) dialogView
.findViewById(R.id.txt_dailog_message);
txt_dailog_message.setText(message);
btn_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// 关闭dialog
if (mDialog != null) {
mDialog.cancel();
}
// 事件回调
if (listener != null) {
listener.onClick();
}
// 播放音效
// MyPlayer.playTone(context, MyPlayer.INDEX_STONE_ENTER);
}
});
btn_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// 关闭dialog
if (mDialog != null) {
mDialog.cancel();
}
// 播放音效
// MyPlayer.playTone(context, MyPlayer.INDEX_STONE_CANCEL);
}
});
// 为dialog设置View
// builder.setView(dialogView);
mDialog.setContentView(dialogView);
// mDialog = builder.create();
mDialog.show();
}
} AlertDialog:
/**
* 显示自定义对话框
*
* @param context
* @param message
* @param listener
*/
public static void showDialog(final Context context, String message,
final IAlertDialogButtonListener listener) {
View dialogView = null;
AlertDialog.Builder builder = new Builder(context,
R.style.Theme_Transparent);
dialogView = getView(context, R.layout.dialog_view);
ImageButton btn_ok = (ImageButton) dialogView.findViewById(R.id.btn_ok);
ImageButton btn_cancel = (ImageButton) dialogView
.findViewById(R.id.btn_cancel);
TextView txt_dailog_message = (TextView) dialogView
.findViewById(R.id.txt_dailog_message);
txt_dailog_message.setText(message);
btn_ok.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// 关闭dialog
if (mAlertDialog != null) {
mAlertDialog.cancel();
}
// 事件回调
if (listener != null) {
listener.onClick();
}
// 播放音效
MyPlayer.playTone(context, MyPlayer.INDEX_STONE_ENTER);
}
});
btn_cancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
// 关闭dialog
if (mAlertDialog != null) {
mAlertDialog.cancel();
}
// 播放音效
MyPlayer.playTone(context, MyPlayer.INDEX_STONE_CANCEL);
}
});
// 为dialog设置View
builder.setView(dialogView);
mAlertDialog = builder.create();
mAlertDialog.show();
}af_dialog_background圆角:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" > <solid android:color="#3C4856" /> <corners android:bottomLeftRadius="0.1dp" android:bottomRightRadius="0.1dp" android:topLeftRadius="10dp" android:topRightRadius="10dp" /> </shape>
dialog_view:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center_horizontal" android:orientation="vertical" android:paddingLeft="10dp" android:paddingRight="10dp" > <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/af_dialog_background" android:orientation="vertical" > <TextView style="@style/TextViewStyle_aboutus" android:layout_gravity="left" android:layout_marginLeft="10dp" android:layout_marginTop="5dp" android:text="@string/af_logo_10_dialog_title" android:textColor="@color/white4" android:textSize="14sp" /> <ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginTop="10dp" android:background="@drawable/af_dialog_background" android:fillViewport="true" android:scrollbars="none" > <TextView android:id="@+id/txt_dailog_message" style="@style/TextViewStyle_aboutus" android:lineSpacingMultiplier="1.2" android:text="@string/af_logo_10_dialog_content" android:textColor="@color/white4" android:textSize="14sp" /> </ScrollView> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/white" android:gravity="center_horizontal" android:orientation="horizontal" > <Button android:id="@+id/btn_cancel" style="?android:attr/buttonBarButtonStyle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginLeft="25dp" android:layout_marginRight="15dp" android:layout_marginTop="5dp" android:layout_weight="1" android:background="@drawable/btn_cancelclick" android:contentDescription="@string/action_settings" android:paddingBottom="8dp" android:paddingTop="8dp" android:text="@string/af_cancel" android:textColor="@color/white" android:textSize="16sp" /> <Button android:id="@+id/btn_ok" style="?android:attr/buttonBarButtonStyle" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginLeft="15dp" android:layout_marginRight="25dp" android:layout_marginTop="5dp" android:layout_weight="1" android:background="@drawable/btn_able" android:contentDescription="@string/action_settings" android:paddingBottom="8dp" android:paddingTop="8dp" android:text="@string/af_confirm" android:textColor="@color/white" android:textSize="16sp" /> </LinearLayout> </LinearLayout>
最后是style:
<style name="Theme_Transparent" parent="@android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:background">@android:color/transparent</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:backgroundDimEnabled">true</item> <item name="android:backgroundDimAmount">0.6</item> </style>
谢谢hongyang大神~~开心挣钱每一天
本文出自 “梁肖技术中心” 博客,请务必保留此出处http://liangxiao.blog.51cto.com/3626612/1613291
标签:android listener message builder public
原文地址:http://liangxiao.blog.51cto.com/3626612/1613291