dialog的圆角

今天在群里和一个群友讨论圆角的问题,他要实现一个对话框的形式,但是讨厌那个四四方方的边框,让我想想办法,我看来主要有两个办法可以解决 第一个呢 就是把dialog进行样式设置这个是真正的dialog。另一个呢 就是平常的activity只是使用一个dialog的主题,我这里选择了第二个第一种没有进行调试。

setContentView(R.layout.custom_dialog_activity);很简单吧

关键就是layout.custom_dialog_activity.xml

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

<TextView android:id="@+id/text"
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"
    
    android:gravity="center_vertical|center_horizontal"
    android:text="custom_dialog_activity_textdfdfdihfdihfdihdshshudufhuddudfidifsoidhis我爱你"/>
    
     <Button  	android:id="@+id/ibtn"
                 android:layout_below="@+id/text"
                 android:layout_centerHorizontal="true"
                 android:layout_centerVertical="true"
				android:layout_width="wrap_content" 
			    android:layout_height="wrap_content" 
			    
			    android:background="@drawable/icon"
			   />
</RelativeLayout>

 

这里呢我采用了RelativeLayout 如果采用linearLayout的话 textView文本太长竟然截断 我不知道如何解决 换成了relativelatout。这就是要显示的主界面。

但是关键的部分 在哪里呢 那就是主题在主xml中加入

<activity android:name=".CustomDialogActivity"
                  android:label="@string/app_name"
                   android:theme="@style/Theme.CustomDialog">

 附件alert中listView最后一个按钮实现的是上面的功能

然后就是Theme.CustomDialog

也就是关键点了

<?xml version="1.0" encoding="utf-8"?>
<resources>
<!--  
 <style name="Theme" parent="android:Theme">
  
    </style>
     -->
      <style name="Theme.CustomDialog" parent="android:style/Theme.Dialog">
        <item name="android:windowBackground">@drawable/filled_box</item>
        <item name="android:windowNoTitle">true</item>
      
    </style>
</resources>

 

我们继承了父类的dialog的主题 我查看了一下 里面默认 <item name="android:windowFrame">@null</item>

也就是说主类中已经默认 不要边框了

这里呢就主要有drawable/filled_box 这个就很很简单了 直接从自带的文件中拿来的

<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#ffffffff"/>
    <stroke android:width="3dp" color="#ffff8080"/>
    <corners android:radius="30dp" />
    <padding android:left="10dp" android:top="10dp"
        android:right="10dp" android:bottom="10dp" />
</shape>

 

solid 也就是实体话  填充色的意思 就是整个背景的颜色

stroke 就是描边的意思 也就是边缘的颜色如果设置不仔细是没有效果的 有点要求这个

corners就是你喜欢的圆角

呼呼就这个简单源码在附件中呼呼.

第二种方法 很简单 只是很奇怪 昨天想用这种方法不成功 今天早上竟然好用了赞一个

LayoutInflater factory =(LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
          //  LayoutInflater factory = LayoutInflater.from(this);
            final View textEntryView = factory.inflate(R.layout.alert_dialog_text_entry, null);
                Dialog ad=  new Dialog(this, R.style.Theme_CustomDialog2);
         ad.setContentView(textEntryView);

 

其中R.layout.alert_dialog_text_entry这个是api自带的位于res/layout

这种方法有个缺点 就是支持的api函数要比alertDialog少的多 当然了你也可以自己扩展。这样基本上就够用了 本来就是个提示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值