Jef*_*hou 7 android android-alertdialog android-dialog
这是我的对话框的 xml 文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/main"
android:paddingTop="23dp"
android:background="@android:color/white">
<ImageView
android:id="@+id/officer"
android:layout_width="47dp"
android:layout_height="47dp"
android:layout_marginLeft="24dp"
android:background="@drawable/officerman"/>
<TextView
android:id="@+id/text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Are you sure you want\nto sign out?"
android:textSize="15.5dp"
android:textColor="#1C86FF"
android:layout_marginTop="4dp"
android:lineSpacingExtra="2dp"
android:layout_marginLeft="84dp"/>
<LinearLayout
android:layout_marginTop="20dp"
android:layout_width="264dp"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:weightSum="1"
android:layout_below="@id/officer">
<Button
android:id="@+id/yes"
android:layout_width="wrap_content"
android:layout_weight="0.5"
android:layout_height="42dp"
android:background="#1C86FF"
android:text="Yes"
android:textAllCaps="false"
android:textSize="15dp"
android:textColor="@android:color/white"/>
<Button
android:id="@+id/no"
android:layout_width="wrap_content"
android:layout_weight="0.5"
android:layout_height="42dp"
android:background="#0078FF"
android:textSize="15dp"
android:textColor="@android:color/white"
android:textAllCaps="false"
android:text="No"/>
</LinearLayout>
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)
这是我的java代码
AlertDialog.Builder build = new AlertDialog.Builder(Login.this);
View lview = getLayoutInflater().inflate(R.layout.dialog_leave,null);
build.setView(lview);
AlertDialog dialog = build.create();
dialog.show();
Run Code Online (Sandbox Code Playgroud)
alertdialog无论我尝试什么,大小都不会包装到我的内容中。就这样结束了。它在右侧增加了扩展空间以使其达到一定的大小。
单击此处查看图像。它在右侧添加了扩展空间,以使其达到默认的警报对话框大小
我尝试过使用getWindow.setLayout(width,height)像素,但这太痛苦了,必须有更好的方法来做到这一点。
我getWindow.setLayout(Relative.LayoutParams.WRAP_CONTENT, ...)也试过了,同样的事情仍然发生。
我也试过使用popupwindow. 解决这个问题的简单方法是什么?
小智 10
以上内容都没有为我包装内容。这对我有用。
我在styles.xml中添加了这个样式
<style name="WrapContentDialog" parent="Theme.AppCompat.Light.Dialog">
<item name="windowMinWidthMajor">0%</item>
<item name="windowMinWidthMinor">0%</item>
</style>
Run Code Online (Sandbox Code Playgroud)
然后我将它设置为这样的对话框。
AlertDialog.Builder builder = new AlertDialog.Builder(getContext(), R.style.WrapContentDialog);
Run Code Online (Sandbox Code Playgroud)
希望它也适合你。
试试这个我的朋友
AlertDialog.Builder build = new AlertDialog.Builder(Login.this);
LayoutInflater mlLayoutInflater=LayoutInflater.from(MainActivity.this);
final View dialView=mlLayoutInflater.inflate(R.layout.R.layout.dialog_leave,null);
AlertDialog dialog_card = build.create();
Window window = dialog_card.getWindow();
window.setLayout(WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.WRAP_CONTENT);
window.setGravity(Gravity.CENTER);
build.show();
Run Code Online (Sandbox Code Playgroud)
尝试使用DialogFragment
public class DialogChangePasswordFragment extends DialogFragment {
private Listener dialogButtonClick;
private EditText editOldPassword;
private EditText editNewPassword;
private EditText editConfirmPassword;
public static DialogChangePasswordFragment newInstance() {
DialogChangePasswordFragment fragment = new DialogChangePasswordFragment();
return fragment;
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
try {
dialogButtonClick = (Listener) context;
} catch (Exception e) {
dialogButtonClick = (Listener) getTargetFragment();
e.printStackTrace();
}
}
@Override
public void onResume() {
super.onResume();
getDialog().getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
}
@Override
public void onDetach() {
super.onDetach();
dialogButtonClick = null;
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Dialog dialog = super.onCreateDialog(savedInstanceState);
dialog.getWindow().requestFeature(Window.FEATURE_NO_TITLE);
return dialog;
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(R.layout.dialog_password_confirm, container, false);
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
TextView dialogOk = (TextView) view.findViewById(R.id.dialogOk);
TextView dialogCancel = (TextView) view.findViewById(R.id.dialogCancel);
dialogOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (validateFields()) {
dialogButtonClick.onConfirmChangePassword(editOldPassword.getText().toString().trim(), editConfirmPassword.getText().toString().trim());
dismiss();
}
}
});
setCancelable(false);
dialogCancel.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dismiss();
}
});
}
public interface Listener {
void onConfirmChangePassword(String oldPassword, String newPassword);
}
Run Code Online (Sandbox Code Playgroud)
}
| 归档时间: |
|
| 查看次数: |
6537 次 |
| 最近记录: |