标签: android-dialog

Android获得自定义Dialog的全宽

在我的应用程序中,我创建的自定义对话框没有完整的高度,我无法更改和自定义.例如看到这个屏幕截图:

在此输入图像描述 我的代码:

final Dialog contacts_dialog = new Dialog(ActivityGroup.this, R.style.theme_sms_receive_dialog);
contacts_dialog.setContentView(R.layout.dialog_schedule_date_time);
contacts_dialog.setCancelable(true);
contacts_dialog.setCanceledOnTouchOutside(true);
contacts_dialog.show();
Run Code Online (Sandbox Code Playgroud)

布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layoutRoot"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@null"
    android:orientation="vertical" >

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/shape_header_dialog_background"
        android:orientation="horizontal"
        android:padding="4dp" >

        <TextView
            android:id="@+id/TextView21"
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:layout_marginRight="5dp"
            android:layout_weight="2"
            android:gravity="center_vertical|right"
            android:text="@string/choose_schedule_time_date"
            android:textColor="#ffffff"
            android:textSize="14sp"
            android:textStyle="bold" />

        <ImageView
            android:id="@+id/ImageView03"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_marginTop="0dp"
            android:background="@drawable/icon_scudule_time" />
    </LinearLayout>

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

样式:

<style name="theme_sms_receive_dialog" parent="android:style/Theme.Dialog">
    <item name="android:windowNoTitle">true</item>
    <item name="android:background">@android:color/transparent</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="numberPickerStyle">@style/NPWidget.Holo.Light.NumberPicker</item>
</style>
Run Code Online (Sandbox Code Playgroud)

android android-layout android-dialog

46
推荐指数
8
解决办法
6万
查看次数

将正/负按钮添加到DialogFragment的对话框

我已经写了一个DialogFragment.现在我意识到我希望它像AlertDialog一样有一个正面和负面的按钮.如何在保持我编写的代码的同时实现这样的目标?

public class DoublePlayerChooser extends DialogFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);        

    setStyle(DialogFragment.STYLE_NORMAL,0);



}

@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {

    return new AlertDialog.Builder(getActivity())
            .setTitle("title")
            .setPositiveButton("OK",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        // do something...
                    }
                }
            )
            .setNegativeButton("Cancel",
                new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int whichButton) {
                        dialog.dismiss();
                    }
                }
            )
            .create();
}



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

    View v = inflater.inflate(R.layout.doubleplayerchooser, container, false);
    getDialog().setTitle("Enter Players");

    firstPlayerPicker = …
Run Code Online (Sandbox Code Playgroud)

android android-dialog android-dialogfragment

40
推荐指数
2
解决办法
5万
查看次数

在自定义对话框上删除黑色背景

我想删除自定义对话框上的黑色背景,如图所示.我确定黑色背景来自对话框,而不是应用程序的背景.

自定义对话框周围有黑色背景 ;

AlertDialog代码

public class MyAlertDialog extends AlertDialog { 
    public MyAlertDialog(Context context) 
    {  
        super(context); 
    }  

    public MyAlertDialog(Context context, int theme) 
    { super(context, theme); }
}
Run Code Online (Sandbox Code Playgroud)

活动代码

public void showMyDialogOK(Context context, String s, DialogInterface.OnClickListener OkListener) {        
    MyAlertDialog myDialog = new MyAlertDialog(context, R.style.MyDialog2);        
    myDialog.setTitle(null); 
    myDialog.setMessage(s);        
    myDialog.setButton(DialogInterface.BUTTON_POSITIVE ,"Ok", OkListener);
    myDialog.show();    
}
Run Code Online (Sandbox Code Playgroud)

样式

<?xml version="1.0" encoding="utf-8"?>
    <resources>
        <style name="MyTheme" parent="@android:style/Theme.NoTitleBar.Fullscreen">
            <item name="android:alertDialogStyle">@style/AlertDialog</item>  
        </style>    

        <style name="MyTheme2" parent="@android:style/Theme.Black">
            <item name="android:alertDialogStyle">@style/AlertDialog</item>    
        </style> 

        <style name="AlertDialog">        
            <item name="android:fullDark">@null</item>
            <item name="android:fullBright">@null</item>
            <item name="android:topDark">@drawable/popup_top_dark</item>
            <item name="android:topBright">@null</item>
            <item name="android:centerBright">@null</item>
            <item name="android:centerDark">@drawable/popup_center_dark</item>
            <item …
Run Code Online (Sandbox Code Playgroud)

android android-alertdialog android-dialog android-styles

38
推荐指数
6
解决办法
4万
查看次数

如何在对话框外发生单击时触发事件

我想知道如何解决我遇到的问题.

我有一个在活动中弹出的Dialog.对话框不会覆盖整个屏幕,因此活动中的按钮仍会显示.当对话框的边界外有触摸时,我可以轻松关闭对话框dialog.setCanceledOnTouchOutside(true);

但是,如果点击在Dialog的边界之外,我想要做的就是触发一个事件(例如,如果有人触摸主Activity上的按钮,它应该关闭Dialog并同时触发该事件).

android android-dialog

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

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

使用单选按钮列表创建自定义对话框

我有一个方法,我有一个值列表:

     /**
     * ISO
     * */
    public void getISO(View view) {
        // Open dialog with radio buttons
        List<String> supported_isos = preview.getSupportedISOs();
        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(MainActivity.this);
        String current_iso = sharedPreferences.getString(MainActivity.getISOPreferenceKey(), "auto");

    }
Run Code Online (Sandbox Code Playgroud)

此方法在onClick()上显示ImageButton:

android:onClick="getISO"
Run Code Online (Sandbox Code Playgroud)

但我需要在带有单选按钮的对话框中显示此列表.可能已在对话框中选择了首选项值.是否可能?

java android android-listview android-dialog

31
推荐指数
5
解决办法
5万
查看次数

AlertDialog:如何删除视图上方和下方的黑色边框

之前已经问过这个问题:AlertDialog自定义标题有黑色边框

但没有得到满意的答复 - 并且缺少一些信息.


我正在尝试在没有标题的情况下在Android中创建自定义对话框,并且底部没有任何按钮.

但是,生成的对话框在视图的顶部和底部有黑色"边框"/"间距"/某些内容.

文档:

使用基本Dialog类创建的对话框必须具有标题.如果不调用setTitle(),则用于标题的空间仍为空,但仍然可见.如果您根本不需要标题,则应使用AlertDialog类创建自定义对话框.但是,因为使用AlertDialog.Builder类创建的AlertDialog最简单,所以您无权访问上面使用的setContentView(int)方法.相反,您必须使用setView(View).此方法接受View对象,因此您需要从XML中扩展布局的根View对象.

那就是我做的:

Welcome.java

public class Welcome  extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.welcome);

        LayoutInflater inflater = (LayoutInflater)this.getSystemService(LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.welcomedialog, (ViewGroup)findViewById(R.id.layout_root));

        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        builder.setView(layout);
        builder.create().show();
    }
}
Run Code Online (Sandbox Code Playgroud)

welcomedialog.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:layout_width="fill_parent"
              android:layout_height="fill_parent"
              android:background="@drawable/texturebg"
              android:id="@+id/layout_root"
              android:orientation="vertical"
              android:padding="40px">
    ...
</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

注:我已经尝试使用FrameLayout为根ViewGroup,而不是LinearLayout为每一个建议,我发现某处-但这并没有帮助.

结果

在此输入图像描述 在此输入图像描述


setBackgroundDrawable建议

public class Welcome  extends Activity
{
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.welcome);

        LayoutInflater inflater …
Run Code Online (Sandbox Code Playgroud)

android android-layout android-dialog

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

Android 6.0对话框文本不会出现

我将手机更新到Android 6.0,我有两个对话框问题:

1)显示标题,但消息不用于警告对话框(已解决):

        new AlertDialog.Builder(context).setTitle("Title").setMessage("Message");
Run Code Online (Sandbox Code Playgroud)

2)也没有显示自定义对话框片段的标题(未解决):

        getDialog().setTitle("Title");
Run Code Online (Sandbox Code Playgroud)

在棒棒糖或旧版本中没有这样的问题,只有在将手机更新为棉花糖后才出现问题.

如何解决问题?

android android-alertdialog android-dialog android-dialogfragment android-6.0-marshmallow

27
推荐指数
6
解决办法
2万
查看次数

更改ProgressDialog的背景

我想改变一个的背景ProgressDialog.我在网上搜索并找到了各种建议(比如如何从Dialog中删除边框?),但是我无法替换它的实际背景ProgressDialog.相反,我在对话框后面得到另一个背景(黄色):

样式对话框

我的风格:

<style name="StyledDialog" parent="@android:style/Theme.Dialog">
    <item name="android:windowBackground">@drawable/panel_background</item>
</style>
Run Code Online (Sandbox Code Playgroud)

启动以下代码ProgressDialog:

ProgressDialog dialog = new ProgressDialog(this, R.style.StyledDialog);
dialog.setTitle("The title");
dialog.setMessage("The message.");
dialog.show();
Run Code Online (Sandbox Code Playgroud)

drawable与SDK中包含的9个补丁相同,我只是改为颜色.我非常感谢一些暗示我做错了什么.

android android-layout android-dialog

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

Android错误:无法添加窗口 - 令牌null不适用于应用程序

HY.我试图创建一个警告对话框,但是当我运行我的应用程序时,会抛出异常

09-26 12:43:21.949: E/AndroidRuntime(14618): FATAL EXCEPTION: main
09-26 12:43:21.949: E/AndroidRuntime(14618): android.view.WindowManager$BadTokenException: Unable to add window -- token null is not for an application
09-26 12:43:21.949: E/AndroidRuntime(14618):    at android.view.ViewRootImpl.setView(ViewRootImpl.java:687)
09-26 12:43:21.949: E/AndroidRuntime(14618):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:301)
09-26 12:43:21.949: E/AndroidRuntime(14618):    at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:215)
09-26 12:43:21.949: E/AndroidRuntime(14618):    at android.view.WindowManagerImpl$CompatModeWrapper.addView(WindowManagerImpl.java:140)
09-26 12:43:21.949: E/AndroidRuntime(14618):    at android.app.Dialog.show(Dialog.java:278)
09-26 12:43:21.949: E/AndroidRuntime(14618):    at com.example.stampp.UI.Rewards.DeleteRewardsFragment$1.onItemClick(DeleteRewardsFragment.java:80)
09-26 12:43:21.949: E/AndroidRuntime(14618):    at android.widget.AdapterView.performItemClick(AdapterView.java:292)
09-26 12:43:21.949: E/AndroidRuntime(14618):    at android.widget.AbsListView.performItemClick(AbsListView.java:1394)
09-26 12:43:21.949: E/AndroidRuntime(14618):    at android.widget.AbsListView$PerformClick.run(AbsListView.java:3024)
09-26 12:43:21.949: E/AndroidRuntime(14618):    at android.widget.AbsListView.onTouchEvent(AbsListView.java:3846)
09-26 12:43:21.949: E/AndroidRuntime(14618):    at android.view.View.dispatchTouchEvent(View.java:5629)
09-26 12:43:21.949: …
Run Code Online (Sandbox Code Playgroud)

android android-alertdialog android-dialog

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