安卓用Activity作为对话框弹出时无法完全显示

这里写自定义目标题

  • Android Studio中用Activity作为对话框弹出时无法完全显示
    • 原bug
    • 解决方法
    • 结果分析
    • 代码
      • 弹窗DialogWindowActivity的布局
      • 弹窗DialogWindowActivity的代码
      • 主界面按钮的代码

Android Studio中用Activity作为对话框弹出时无法完全显示

原bug

在用Activity作为对话框的时候,点击按钮后如图所示,弹窗没有完全显示

安卓用Activity作为对话框弹出时无法完全显示_第1张图片

解决方法

在一番调试后发现并不是theme的属性问题,我的Manifest中theme主题如下:

        

我将theme改为

android:theme="@style/Theme.AppCompat.Dialog"

不会报错,但仍然是上述情况

最后发现是布局的问题,我原布局如下



    
    
    
    

        

        

修改后布局如下




    
        
    

    

        
        

修改完布局后就能正常显示了

安卓用Activity作为对话框弹出时无法完全显示_第2张图片

结果分析

其实最后我也没怎么搞懂是哪里出问题了
猜测是文字部分没有用一个LinearLayout嵌套,所以导致系统的theme资源文件解析出问题
还有就是以后想让文字、按钮居中尽量在外面包一个LinearLayout,然后在其中设置

android:gravity="center"

不要在文字或按钮控件中用gravity或者layout_gravity进行居中,容易出问题,自己也容易搞得晕头转向的

代码

最后把代码放上来,方便有兴趣的朋友复现

弹窗DialogWindowActivity的布局




    
        
    

    

        
        

弹窗DialogWindowActivity的代码

DialogWindowActivity作为弹窗的Activity

public class DialogWindowActivity extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.layout_customized_dialog);

        findViewById(R.id.customized_dialog_btn).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast.makeText(DialogWindowActivity.this, "Activity的对话框", Toast.LENGTH_SHORT).show();
                finish();
            }
        });
    }
}

主界面按钮的代码

主界面MainActivity放了个按钮,这个按钮的点击事件就是弹窗上面这个Activity作为对话框

    public void clickActivityAsDialogBtn(View view) {
        Intent intent = new Intent(this, DialogWindowActivity.class);
        startActivity(intent);
    }

你可能感兴趣的:(干货,android,java,android,studio,Dialog,Activity)