首先我们需要自定义dialog布局文件view_input_pwd_dialog.xml,如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/dialog_bg"
android:orientation="vertical"
android:showDividers="middle">
<TextView
android:id="@+id/head_lable"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/normal_size"
android:layout_marginRight="@dimen/normal_size"
android:layout_marginTop="@dimen/largest_size"
android:gravity="center"
android:text="连接分享"
android:textColor="@color/black"
android:textSize="@dimen/text_size_medium"
android:textStyle="bold" />
<TextView
android:id="@+id/wifi_name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/normal_size"
android:layout_marginRight="@dimen/normal_size"
android:layout_marginTop="@dimen/small_size"
android:gravity="center_horizontal"
android:textColor="@color/black"
android:textSize="@dimen/text_size_medium"
tools:text="@string/share_wifi_name_lable" />
<linlimarket.commonlib.widget.EditTextWithLabel
android:id="@+id/edit_text"
style="@style/edit_share_pwd"
android:layout_width="match_parent"
android:layout_marginLeft="@dimen/small_size"
android:layout_marginRight="@dimen/small_size"
android:layout_marginTop="@dimen/small_size"
app:hint="@string/input_wifi_pwd_lables"
app:label=""
app:maxLength="16"
app:src="@mipmap/pwd_hide" />
<TextView
android:id="@+id/waring_tips"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="18dp"
android:layout_marginLeft="@dimen/normal_size"
android:layout_marginRight="@dimen/normal_size"
android:layout_marginTop="@dimen/small_size"
android:gravity="left"
android:text="提示:成功分享热点将会得到打赏收益"
android:textColor="#f7b52c"
android:textSize="@dimen/text_size_small" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/button_hight"
android:layout_marginTop="@dimen/small_size"
android:orientation="horizontal"
android:showDividers="middle">
<Button
android:id="@+id/btn_dialog_give_up"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/cancle_share_btn_bg"
android:text="@string/cancel"
android:textColor="@color/white"
android:textSize="18sp" />
<Button
android:id="@+id/btn_dialog_firm"
style="?android:attr/buttonBarButtonStyle"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="@drawable/confirm_share_btn_bg"
android:text="@string/firm"
android:textColor="@color/white"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
dialog背景圆角定义dialog_bg.xml:
<?xml version="1.0" encoding="UTF-8"?><!-- 顶部带圆角 白色背景 灰色边框 无下边框 长方体 -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape>
<solid android:color="@color/white" />
<corners
android:bottomLeftRadius="10dp"
android:bottomRightRadius="10dp"
android:topLeftRadius="10dp"
android:topRightRadius="10dp" />
</shape>
</item>
</layer-list>
代码实现:
LayoutInflater inflater = LayoutInflater
.from(getActivity());
LinearLayout layout = (LinearLayout) inflater.inflate(
R.layout.view_input_pwd_dialog, null);
final EditTextWithLabel pwdEt = (EditTextWithLabel) layout
.findViewById(R.id.edit_text);
Button firmBtn = (Button) layout
.findViewById(R.id.btn_dialog_firm);
Button cancleBtn = (Button) layout
.findViewById(R.id.btn_dialog_give_up);
TextView wifiNameTv = (TextView) layout.findViewById(R.id.wifi_name);
wifiNameTv.setText(getString(R.string.share_wifi_name_lable, wifi.hot_name));
pwdEt.getEditText().setInputType(InputType.TYPE_CLASS_TEXT
| InputType.TYPE_TEXT_VARIATION_PASSWORD);
pwdEt.getImageView().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EditText editText = pwdEt.getEditText();
int hide = InputType.TYPE_CLASS_TEXT
| InputType.TYPE_TEXT_VARIATION_PASSWORD;
int show = InputType.TYPE_CLASS_TEXT
| InputType.TYPE_TEXT_VARIATION_VISIBLE_PASSWORD;
if (editText.getInputType() == hide) {
editText.setInputType(show);
pwdEt.getImageView().setImageResource(R.mipmap.pwd_show);
} else {
editText.setInputType(hide);
pwdEt.getImageView().setImageResource(R.mipmap.pwd_hide);
}
pwdEt.getEditText().setSelection(pwdEt.getText().toString().length());
}
});
final AlertDialog dlg = new AlertDialog.Builder(
getActivity()).create();
dlg.setView(layout, 0, 0, 0, 0);//防止黑边
dlg.setCancelable(true);
firmBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String pwd = pwdEt.getText().toString();
if (StringUtils.isEmpty(pwd)) {
ToastUtils.show("密码不能为空,请确认");
return;
}
if (!StringUtils.isEmpty(pwd) && pwd.length() < 8) {
ToastUtils.show("密码位数不正确,请确认");
return;
}
wifi.password = pwd;
mNetId = mHotManager.connectWiFi(wifi);
mFragmentHomeBinding.header.setCenterText(wifi.hot_name, 20);
updateConnectingUI(getResources().getString(R.string.be_connecting));
isConnecting = true;
mFragmentHomeBinding.header.startAnimation();
dlg.dismiss();
}
});
cancleBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dlg.dismiss();
}
});
Window window = dlg.getWindow();
window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); // 有白色背景,加这句代码
dlg.show();
//获取屏幕的长宽
WindowManager windowManager = getActivity().getWindowManager();
Display display = windowManager.getDefaultDisplay();
int screenheight = display.getHeight();
int screenWidth = display.getWidth();
//设置弹出框的长宽
dlg.getWindow().setLayout(screenWidth * 4 / 5, screenheight * 2 / 5);
最终实现效果: