如何在自定义对话框的边界上获得交叉按钮/图像(红色圆圈)?
答案 0 :(得分:13)
Android不是Windows。您不需要Windows样式的“关闭”按钮。此外,Android不是MacOS,所以你也不需要一点闪亮的红色糖果点。
为移动平台开发应用程序时,您应该遵循定义该平台的使用模式和视觉样式的User Interface Guidelines。
Android没有标题栏,没有下拉菜单,也没有最小化/恢复/关闭按钮。不要试图制作它们,否则你会制作一个看似从未用于Android平台的应用程序。
“后退”硬键是完全符合您要求的按钮。它会在不进行选择的情况下关闭对话框。让Android平台在这里做同样的事情。不要强迫用户在他们使用的操作系统中思考。
答案 1 :(得分:2)
HI,
您必须按照以下步骤制作此自定义对话框。
在您的values文件夹中创建一个xml文件style.xml。并在资源标记中输入样式。
<style name="Theme.CustomDialog"
parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@drawable/bg_popup</item>
<item name="android:windowNoTitle">true</item>
<item name="android:layout_width">wrap_content</item>
<item name="android:layout_height">wrap_content</item>
</style>
在布局文件夹中创建custom_dialog.xml。
<RelativeLayout android:layout_width="wrap_content"
android:layout_height="wrap_content">
<LinearLayout android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginTop="10dp" android:layout_marginRight="10dp">
</LinearLayout>
<ImageView android:layout_width="wrap_content"
android:layout_height="wrap_content" android:background="@drawable/red_cross"
android:layout_alignParentRight="true" android:layout_alignParentTop="true">
</ImageView>
</RelativeLayout>
最终在活动中访问此布局。
答案 2 :(得分:1)
这是您活动中的代码
AlertDialog.Builder builder;
Context mContext = YOURACTIVITY.this;
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.custom_dialog,
(ViewGroup) findViewById(R.id.layout_root));
ImageView close_dialog = (ImageView) layout.findViewById(R.id.imageView_custom_dialog_close);
close_dialog.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
alertDialog.dismiss();
}
});
builder = new AlertDialog.Builder(mContext);
builder.setView(layout);
alertDialog = builder.create();
alertDialog.show();
这是custom_dialog.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout_root"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp" android:background="@drawable/background">
<ImageView
android:id="@+id/imageView_custom_dialog_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="right"
android:layout_margin="2dp"
android:src="@android:drawable/ic_delete" />
//add here any controls you might want
</LinearLayout>
声明某处私人AlertDialog alertDialog; ....
希望这对你有所帮助。
答案 3 :(得分:1)
我做了一些工作,这里是在nuxes 5上进行代码测试,附加图像中的交叉是图像
<强> dialog.xml 强>
<RelativeLayout
android:layout_marginTop="20dp"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginRight="20dp"
android:background="@drawable/rounded_border"
android:paddingBottom="20dp"
android:gravity="center_horizontal" >
<TextView
android:id="@+id/label_popup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:gravity="center_horizontal"
android:text="@string/label_recive_pin"
android:textColor="@color/green_line"
android:padding="5dp"
android:textScaleX="1.3"
android:textSize="18sp" />
<EditText
android:id="@+id/edtpin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/label_popup"
android:layout_centerHorizontal="true"
android:layout_marginTop="40dp"
android:background="@color/edit_green_bg"
android:ems="15"
android:gravity="center_horizontal"
android:hint="@string/enter_email"
android:inputType="textEmailAddress"
android:paddingBottom="10dp"
android:paddingTop="10dp"
android:textColor="@color/edit_green_txt"
android:textSize="15sp" >
<requestFocus />
</EditText>
<Button
android:id="@+id/btnLogin"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/edtpin"
android:layout_alignRight="@+id/edtpin"
android:layout_below="@+id/edtpin"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:background="@drawable/btn_bg_darkgreen"
android:onClick="onLoginButtonClick"
android:text="@string/get_pin_btn_txt"
android:textColor="@color/white"
android:textSize="20sp" />
</RelativeLayout>
<ImageView
android:id="@+id/cancel_btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:src="@drawable/cross_window" />
布局rounded_border.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<solid android:color="@color/white" />
<corners android:radius="12dip" />
<stroke
android:width="1dip"
android:color="@color/green_line" />
</shape>
</item>
</layer-list>
onCreate方法中的对话框类
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));// *that how i made background transparent so that **Only** rounded border can be seen*
setContentView(R.layout.dialog_getpin);
}
<强>示范强>