【问题标题】:Android - Floating Alert Dialog which still enables user input in the main layout/activityAndroid - 浮动警报对话框,仍然允许用户在主布局/活动中输入
【发布时间】:2014-11-29 03:04:40
【问题描述】:

美好的一天,为令人困惑的标题道歉。

我正在创建一个 android 应用程序,我需要一个对话框/弹出窗口以显示在特定的 X Y 位置。我已经有一个可用的 DialogFragmet,如下所示:

public class ItemDialog extends DialogFragment implements OnClickListener{

    //a lot of public and private variables here

    public interface onSubmitListener {
        void setOnSubmitListener(String qty, String disc, String instructions, UOMClass uom);  
    }  

    @Override  
    public Dialog onCreateDialog(Bundle savedInstanceState) {  

        final Dialog dialog = new Dialog(getActivity());  
        dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,  
                WindowManager.LayoutParams.FLAG_FULLSCREEN);  

        LayoutInflater layoutInflater = (LayoutInflater) getActivity()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View layout2 = layoutInflater.inflate(R.layout.fragment_item_dialog, null);

        dialog.setContentView(layout2);  
        setStyle(DialogFragment.STYLE_NORMAL, R.style.MyDialog);

        //snip snip more code   

        dialog.show();  

        //buttons - I set the buttons here

        //editTexts - I set the edit texts here

        //TextViews - I set the text views here

        return dialog;  
    }  

    //more functions here

}

我从我的基本活动中调用它如下:

ItemDialog itemDialog = new ItemDialog();

//pass values from base activity to the ItemDialog here

itemDialog.show(getFragmentManager(), "");

但是,我需要能够在其中的编辑文本中看到基本活动和输入值。到目前为止,我的 DialogFragment 覆盖了屏幕的很大一部分,我无法看到它背后的活动。在 Dialog Fragment 外部单击也会取消它。

我搜索了如何使警报对话框浮动但无济于事。

有没有办法在屏幕的某个区域显示对话框片段以允许用户查看并仍然在基本活动中输入值?

非常感谢任何帮助,谢谢。

【问题讨论】:

    标签: android android-dialogfragment dialogfragment


    【解决方案1】:

    您可以获取窗口对象并在下面的代码中设置它的布局参数可能会对您有所帮助。

    Window window = getDialog().getWindow();
    
        // set "origin" to top left corner, so to speak
        window.setGravity(Gravity.TOP|Gravity.LEFT);
    
        // after that, setting values for x and y works "naturally"
        WindowManager.LayoutParams params = window.getAttributes();
        params.x = 300;
        params.y = 100;
        window.setAttributes(params);
    

    更多信息Position of DialogFragment in Android 您还可以为对话框设置背景颜色或位图

    【讨论】:

    • 谢谢。我还添加了window.setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL); window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);所以更直观的是用户仍然可以与基础活动进行交互。
    • 您可以将对话框设置在特定的 x 和 y 坐标。并设置 setCancelable(false)。和 setCanceledOnTouchOutside(false) developer.android.com/reference/android/app/… 。我不确定它是否会帮助你,我没有尝试过。
    • 抱歉 2 天后遇到此问题。似乎 DialogFragment 阻止了基础活动中的任何 EditTexts 来显示软键盘?
    • 这里的cmets和文章->stealthcopter.com/blog/2010/01/…帮了我很多
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多