Android - 自定义对话框

Android - Custom Dialog

我正在尝试创建一个自定义对话框,其中对话框内的内容是动态的。所以我将一个视图传递给对话框,它会将该视图添加到对话框中。目前,它不绘制自定义视图,并表示该视图的宽度和高度为 0。

我通过应用程序 class 传递自定义视图以及一系列其他自定义项。

这是我的对话框class:

    public class LoadingActivity extends Dialog
    {
        private LoadingActivity(Context a) {
            super(a, android.R.style.Theme);
        }

        public static LoadingActivity show(Context context) {

            LoadingActivity checkerLoader = new LoadingActivity(context);

            View currentView = View.inflate(context, R.layout.loading_activity, null);
            FrameLayout linearLayout = (FrameLayout) currentView.findViewById(R.id.circular_progress_bar);
            RelativeLayout viewLayout = (RelativeLayout) currentView.findViewById(R.id.view_layout);

            if (DataManager.getInstance().getAppConfigurations().getLoadingActivity() != null) {
                View loadingView = DataManager.getInstance().getAppConfigurations().getLoadingActivity();
                loadingView.setBackgroundColor(Color.RED);
                loadingView.invalidate();
                if(loadingView.getParent()!=null) {
                    ((ViewGroup) loadingView.getParent()).removeView(loadingView);
                }
                viewLayout.addView(loadingView);
            }

            checkerLoader.requestWindowFeature(Window.FEATURE_NO_TITLE); //before
            checkerLoader.setContentView(currentView);

            checkerLoader.setCancelable(false);
            checkerLoader.getWindow().getAttributes().gravity = Gravity.CENTER;

            WindowManager.LayoutParams lp = checkerLoader.getWindow().getAttributes();
            lp.dimAmount=0.2f;

            checkerLoader.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
            checkerLoader.getWindow().setAttributes(lp);
            checkerLoader.show();

            return checkerLoader;
        }
    }

这是我的自定义视图的示例:

    public class Spinner extends LinearLayout
    {
        public Spinner(Context context) {
            super(context);
            init(context);
        }

        public Spinner(Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
            init(context);
        }

        public Spinner(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
            super(context, attrs, defStyleAttr);
            init(context);
        }

        private void init(Context context) {

            View aView = View.inflate(context, R.layout.loading_activity, null);
            ImageView logoImage = (ImageView) aView.findViewById(R.id.loading_image);
            logoImage.setImageResource(R.drawable.loading_chicken2);
        }
    }

Custom View Spinner 不绘制任何内容,因为膨胀布局 'R.layout.loading_activity' 未添加到父级。

改变

 View aView = View.inflate(context, R.layout.loading_activity, null);

至:

 View aView = View.inflate(context, R.layout.loading_activity, this);

可能会有帮助