标签: android-alertdialog

如何设置复选框选中和禁用

我有这个代码来显示可供下载的语言列表:

public void onCreateDialog(ArrayList<String>fullLangArray, final ArrayList<String>codeLangArray) {

    final String[] items = fullLangArray.toArray(new String[fullLangArray.size()]);

    final ArrayList mSelectedItems = new ArrayList();

    AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);

    // Set the dialog title
    builder.setTitle("Updates...")
            .setMultiChoiceItems(items, null,
                    new DialogInterface.OnMultiChoiceClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int indexSelected,
                                            boolean isChecked) {
                            if (isChecked) {
                                  mSelectedItems.add(Utils.SERVER_ADDRESS + "/" + codeLangArray.get(indexSelected) + ".zip");
                            } else if (mSelectedItems.contains(indexSelected)) {
                                  mSelectedItems.remove(Integer.valueOf(indexSelected));
                            }
                        }
                    })

            .setPositiveButton("Download", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int id) {

                    DownloadTask downloadTask = new …
Run Code Online (Sandbox Code Playgroud)

java android android-alertdialog android-checkbox

3
推荐指数
1
解决办法
1万
查看次数

Android 弹出窗口与 Android 对话框

我试图在我的应用程序中实现一个简单的逻辑,其中向用户显示一个弹出窗口(在应用程序启动一段时间后)。弹出窗口只显示TextView带有一些信息的消息。每次启动应用程序时都会刷新此消息并显示一条新消息。弹出窗口的 UI 与我的应用程序 UI 匹配 - 这里可能只需要弹出背景图像。还有一个关闭按钮 (X) 显示在弹出窗口的右上角 - 关闭此弹出窗口。

显示消息的逻辑:我有一个String数组,其中存储了大约 100 个字符串。我从这个数组中随机选择一个字符串并填充TextView显示消息的弹出窗口。请建议是否有比我已经在这里做的更好的方法。是否也有可能逻辑,如果选择了一条消息,那么在其他消息至少显示一次之前不会选择相同的消息?

显示弹出窗口的逻辑:这是我无法实现的。我不想用任何用户EventButton点击来锚定弹出窗口。我只是想在一段时间后显示消息 - 说

线程睡眠(3000);

现在我尝试使用PopupWindow下面的代码来使用它。

PopupWindow infoPopup;    
LinearLayout infoLayout;
TextView infoTextView;
Button infoButton;
infoTextView = new TextView(this);
infoTextView.setText("Testing Popup Text");
infoTextView.setPadding(10,10,10,10);
infoButton = new Button(this);
infoButton.setText("Close");    
infoLayout = new LinearLayout(this);
infoLayout.setOrientation(LinearLayout.VERTICAL);
infoLayout.addView(infoTextView);
infoLayout.addView(infoButton);    
infoPopup = new PopupWindow(infoLayout,LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.WRAP_CONTENT);
infoPopup.setContentView(infoLayout);    
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}    
infoPopup.showAtLocation((CoordinatorLayout)findViewById(R.id.main_content),Gravity.CENTER,100,100);
Run Code Online (Sandbox Code Playgroud)

但是这个弹出窗口在最后一行显示错误,在我的

(CoordinatorLayout)findViewById(R.id.main_content)

范围。 …

java android popupwindow android-alertdialog

3
推荐指数
1
解决办法
5281
查看次数

如何保持对话框打开

private void openDialog(){

    LayoutInflater inflater = LayoutInflater.from(TrueAct.this);
    View subView = inflater.inflate(R.layout.newdialog, null);
    AlertDialog.Builder builder = new AlertDialog.Builder(this);
    builder.setMessage("Enter New");
    builder.setView(subView);

    blEntryExistToday = true;
    builder.setPositiveButton("ADD", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            if (!blEntryExistToday) {
                //CLOSE DIALOG
            }
            else {
                tvM.setText("An entry for this day already exist!");
                //DO NOT CLOSE DIALOG
            }
        }
    });

    builder.setNegativeButton("CANCEL", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Toast.makeText(MainActivity.this, "Cancel", Toast.LENGTH_LONG).show();
            //CLOSE THE DIALOG
        }
    });

    builder.show();
}
Run Code Online (Sandbox Code Playgroud)

无论我单击添加还是取消,对话框都会关闭。如果 …

android android-alertdialog

3
推荐指数
1
解决办法
1868
查看次数

AlertDialog 在三星 Galaxy s4 中未显示正负按钮

我已经显示AlertDialog了 2 个按钮,即是和取消,这是代码。

final AlertDialog.Builder builder = new AlertDialog.Builder(RiderDetailActivity.this);
builder.setCancelable(false);
builder.setMessage("Are you sure?");

final AlertDialog dialog = builder.create();
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        dialog.dismiss();
    }
});
builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        dialog.dismiss();
    }
});
dialog.show();
Run Code Online (Sandbox Code Playgroud)

这仅在三星 Galaxy s4 上不显示是和取消按钮

在此处输入图片说明

但是当我将它与它一起使用dialog.setButton时效果很好

dialog.setButton(DialogInterface.BUTTON_POSITIVE, "Yes", new DialogInterface.OnClickListener() {
    @Override
    public void onClick(DialogInterface dialogInterface, int i) {
        dialog.dismiss();
    }
});
dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() {
    @Override …
Run Code Online (Sandbox Code Playgroud)

android android-alertdialog android-dialog

3
推荐指数
3
解决办法
5916
查看次数

使对话框宽度为全屏

是的,这被问到了几种方式,但没有一种方法有效。

我正在尝试将对话框宽度扩展到全屏。

对话框布局:

<?xml version="1.0" encoding="utf-8"?>

    <android.support.constraint.ConstraintLayout
    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:id="@+id/constraint_layout"
        android:layout_width="match_parent"
        android:layout_height="300dp">

        <android.support.constraint.Guideline
            android:id="@+id/guideline3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintGuide_percent="0.08" />

        <TextView
            android:fontFamily="@font/gotham_medium_regular"
            android:textAllCaps="true"
            android:id="@+id/textView6"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:text="Login"
            android:textAppearance="@style/Base.TextAppearance.AppCompat.Large"
            android:textStyle="bold"
            app:layout_constraintStart_toStartOf="@+id/guideline3"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:fontFamily="@font/gotham_light"
            android:textAppearance="@style/Base.TextAppearance.AppCompat.Medium"
            android:layout_marginTop="8dp"
            app:layout_constraintStart_toStartOf="@+id/guideline3"
            app:layout_constraintTop_toBottomOf="@+id/textView6"
            android:id="@+id/textView7"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:text="Enter your phone number to proceed" />

        <android.support.design.widget.TextInputLayout
            android:id="@+id/text_input"
            android:layout_marginTop="24dp"
            android:layout_width="0dp"
            app:layout_constraintTop_toBottomOf="@+id/textView7"
            android:layout_height="wrap_content"
            app:layout_constraintEnd_toEndOf="@+id/guideline4"
            app:layout_constraintStart_toStartOf="@+id/guideline3">

            <android.support.design.widget.TextInputEditText
                android:id="@+id/userPhone"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fontFamily="@font/gotham_light"
                android:hint="PHONE NUMBER"
                android:inputType="phone"
                android:text="+91" />
        </android.support.design.widget.TextInputLayout>



        <android.support.constraint.Guideline
            android:id="@+id/guideline4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            app:layout_constraintGuide_percent="0.92" />


        <Button
            android:layout_marginBottom="@dimen/activity_horizontal_margin"
            android:id="@+id/continueButton"
            android:layout_width="0dp"
            android:layout_height="wrap_content" …
Run Code Online (Sandbox Code Playgroud)

android android-alertdialog kotlin

3
推荐指数
1
解决办法
4849
查看次数

如何设置对话框标题重力?

我正在尝试将对话框标题重力设置为右侧,因为我正在显示阿拉伯文本。请检查附件图片。

点击这里

所以,我想向右显示标题文本。请建议我的方式。提前致谢。

android dialog android-alertdialog material-design

3
推荐指数
1
解决办法
1095
查看次数

AlertDialog 的 Leanback 版本

在 Android 中,制作AlertDialog带有Positive/Negative按钮的按钮很容易。

new AlertDialog.Builder(getActivity())
           .setTitle("Question?")
           .setPositiveButton("YES", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int which) {
                   // User chose YES
               }
           })
           .setNegativeButton("NO", new DialogInterface.OnClickListener() {
               @Override
               public void onClick(DialogInterface dialogInterface, int i) {
                   // User chose NO
                }
           }).create().show();
Run Code Online (Sandbox Code Playgroud)

我想在我的TV App 中制作等价物。(向用户提问,得到 Yes/No 响应)

我发现了两件事,但都不能解决我的用例:

  1. ErrorFragment(关闭,但只有 1 个按钮)

  2. GuidedStepFragment(允许我有多个选项,但需要创建一个单独的 Activity,我必须编写自己的代码才能将选定的选项传递回第一个 Activity)

我觉得我错过了一些东西。这只是普通 Android 应用程序中的几行代码。

我尝试只AlertDialog在我的电视应用程序中使用,但它会引发Theme关于在应用程序上设置不正确的错误。另外,我认为这些对话框无论如何都不是可访问性友好的。

android android-alertdialog leanback

3
推荐指数
1
解决办法
2092
查看次数

在自定义警报对话框中获取单选按钮的值

我创建了一个带有单选组、单选按钮和编辑文本的自定义警报对话框。

目标是尝试从选定的单选按钮和编辑文本中获取文本值。此时,我只能获取edittext中输入的值。

我已经看到了下面的链接,并尝试调整代码以适应,但似乎代码仍然不起作用。

Android 从选定的单选按钮中获取价值

http://www.mkyong.com/android/android-radio-buttons-example/

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">

<RadioGroup
    android:id="@+id/radioPersonGroup"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <RadioButton
        android:id="@+id/gButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_marginLeft="16dp"
        android:layout_weight="1"
        android:text="G" />
    <RadioButton
        android:id="@+id/kButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="16dp"
        android:layout_marginLeft="16dp"
        android:layout_weight="1"
        android:text="K" />

</RadioGroup>

<EditText
    android:id="@+id/editText2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_marginTop="16dp"
    android:layout_marginLeft="16dp"
    android:layout_weight="1"
    android:ems="10"
    android:hint="$10.00"
    android:inputType="numberDecimal" />
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

java文件

private RadioButton radioSelectedButton;
...

FloatingActionButton fab = findViewById(R.id.fab);
final RadioGroup group = findViewById(R.id.radioPersonGroup);
fab.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        final AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
        final …
Run Code Online (Sandbox Code Playgroud)

android android-alertdialog android-radiogroup android-radiobutton

3
推荐指数
1
解决办法
2357
查看次数

MaterialComponents AlertDialog 文本颜色

阅读MaterialComponents 主题警报对话框按钮https://medium.com/@lcdsmao/material-design-custom-alert-dialog-5a9cab3ade11我设置AlertDialog了新材料主题的按钮和文本颜色。

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.MaterialComponents.Light.DarkActionBar">
    <!-- Customize your theme here. -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <!-- AlertDialog -->
    <item name="materialAlertDialogBodyTextStyle">@style/MaterialAlertDialogTextTheme</item>
    <item name="materialAlertDialogTheme">@style/MaterialAlertDialogButtonsTheme</item>
</style>

<!-- AlertDialog text -->
<style name="MaterialAlertDialogTextTheme" parent="MaterialAlertDialog.MaterialComponents.Body.Text">
    <item name="android:textColor">@color/colorPrimary</item>
    <item name="android:colorAccent">@color/colorPrimary</item>
    <item name="colorAccent">@color/colorPrimaryitem>
    <item name="android:textSize">14sp</item>
    <item name="android:textStyle">bold</item>
</style>

<!-- AlertDialog buttons -->
<style name="MaterialAlertDialogButtonsTheme" parent="ThemeOverlay.MaterialComponents.MaterialAlertDialog">
    <item name="buttonBarPositiveButtonStyle">@style/AlertDialog.Button</item>
    ...
Run Code Online (Sandbox Code Playgroud)

创建AlertDialogFragment使用后

override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
    super.onCreateDialog(savedInstanceState)

    return MaterialAlertDialogBuilder(context!!).apply {
        ...
    }.create()
} …
Run Code Online (Sandbox Code Playgroud)

android android-alertdialog material-design material-components material-components-android

3
推荐指数
1
解决办法
881
查看次数

如何为自定义对话框设置圆角?

这是我的自定义对话框的代码:

public class DialogBrightness extends AppCompatDialogFragment {

@NonNull
@Override
public Dialog onCreateDialog(@Nullable Bundle savedInstanceState) {

    LayoutInflater inflater = getActivity().getLayoutInflater();
    View view = inflater.inflate(R.layout.layout_dialog, null);
    
    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

    /*Build and create the dialog here*/
    
    }
}
Run Code Online (Sandbox Code Playgroud)

我按照其他答案的说明首先创建了这个称为 dialog_bg 的可绘制 xml:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
        <solid
            android:color="#fff5ee"/>
        <corners
            android:radius="30dp" />
        <padding
            android:left="10dp"
            android:top="10dp"
            android:right="10dp"
            android:bottom="10dp" />
</shape>
Run Code Online (Sandbox Code Playgroud)

然后将其设置为 layout_dialog xml 的背景:

android:background="@drawable/dialog_bg"
Run Code Online (Sandbox Code Playgroud)

但我无法完成将对话框的根视图设置为透明的最后一步:

dialogBrightness.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
Run Code Online (Sandbox Code Playgroud)

因为没有 getWindow() 函数。

另外,当他们说 root view 时,他们的意思是我在上面的 inflate 函数中设置为 null 的那个吗?

java android android-alertdialog android-dialogfragment material-components-android

3
推荐指数
1
解决办法
279
查看次数