自定义Dialog的视图宽度设置能match_parent不管用

自定义Dialog的视图宽度设置能match_parent不管用

老师您好,我自定义一个多选的dialog,显示出来的dialog还会很小,所有的控件都会很挤,宽度设置成match—parent也不管用http://img1.sycdn.imooc.com//climg/5b5544c700015e4c01800242.jpg

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

3回答
irista23 2018-07-23 15:15:46

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

   <LinearLayout
       android:layout_width="200dp"
       android:layout_height="match_parent"
       android:layout_marginBottom="20dp"
       android:orientation="horizontal">

       <ImageView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:src="@mipmap/ic_launcher_round" />

       <TextView
           android:layout_width="wrap_content"
           android:layout_height="wrap_content"
           android:layout_gravity="center"
           android:text="爱好选择" />
   </LinearLayout>

   <CheckBox
       android:id="@+id/cb_one"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="健身" />

   <CheckBox
       android:id="@+id/cb_two"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="电影" />

   <CheckBox
       android:id="@+id/cb_three"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="Game" />

   <TextView
       android:id="@+id/tv_sure"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_gravity="right"
       android:layout_marginRight="30dp"
       android:text="确定" />
</LinearLayout>

你要是用match_parent,就让第二层宽度都是match_parent就能显示全了,TextView模拟器能显示真机不显示吗?另外如果只想设置带图标的,你可以使用AlertDialog不用自定义对话框也可以,其builder的setIcon()可以设置图标。

  • 提问者 宝慕林4424134 #1
    嗯,老师我的问题解决了,谢谢您。
    2018-07-23 15:48:28
提问者 宝慕林4424134 2018-07-23 13:55:24
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="20dp"
        android:orientation="horizontal">

        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@mipmap/ic_launcher_round" />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:text="爱好选择" />
    </LinearLayout>

    <CheckBox
        android:id="@+id/cb_one"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="健身" />

    <CheckBox
        android:id="@+id/cb_two"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="电影" />

    <CheckBox
        android:id="@+id/cb_three"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Game" />

    <TextView
        android:id="@+id/tv_sure"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:layout_marginRight="30dp"
        android:text="确定" />
</LinearLayout>

最后在真机上测试是就是这样了

http://img1.sycdn.imooc.com//climg/5b556d9800015e4c01800242.jpg

java代码就是在设置了setContentView,将这个布局加载进去

===============================================================

您看我布局可视化界面中是这样的

http://img1.sycdn.imooc.com//climg/5b557bbd0001c42501930206.jpg

根布局的LinearLayout宽度设置成了wrap_content

<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="match_parent"
    android:orientation="vertical">

下面这个线性布局就是一个水平排放的控件

<LinearLayout
    android:orientation="horizontal"
    android:layout_marginBottom="20dp"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    <ImageView
        android:src="@mipmap/ic_launcher_round"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <TextView
        android:text="性别选择"
        android:layout_gravity="center"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

然后在真机上运行的话就会出现Textview不显示的效果

http://img1.sycdn.imooc.com//climg/5b557c7e00015e4c01800242.jpg

这个是项目作业中最后一条多选对话框的实现,课程上是一个星星图片加一个Textview设置的Dialog的标题栏,所以我想用自定义dialog。

  • 建议你把根布局LinearLayout宽度设置成wrap_content,这样能在布局中可视化看到Dialog布局的效果,第二层让其子元素宽度可以都是wrap_content,或者固定宽度值,或者都是match_parent。
    2018-07-23 14:32:28
  • 提问者 宝慕林4424134 回复 irista23 #2
    您好老师,我修改过后还是没有显示全······
    2018-07-23 15:03:20
irista23 2018-07-23 11:10:39

你检查一下你自定义对话框设置的布局文件中的根布局,你也可以把自定义对话框的布局文件和java代码贴出来方便我们帮你找到问题

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
Android从界面到数据存储2018版
  • 参与学习       504    人
  • 提交作业       1003    份
  • 解答问题       1044    个

本专题是专为有Java语言基础想入坑Android开发的同学们准备的。从AndroidUI基础一直到网络,数据存储,一步到位入门Android开发。如果你会Java,那就不要犹豫了~ ~

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师