安卓怎么修改系统“DIALOG”风格?

安卓怎么修改系统“DIALOG”风格?,第1张

具体步骤如下:

1 编写一个文本样式。

DIALOG的标题是一个textview,在sytles.xml中,添加如下代码来设置你自己的文本样式:

<style name="DialogWindowTitle">

<item name="android:textSize">22sp</item>

<item name="android:textColor">@color/font_dark_grey</item>

</style>

2 设置对话框的标题主题

上面的标题文本并不能直接设置为对话框的标题样式。 我们还需要编写一个表示标题的主题的style,在这里指定标题的文本样式。代码如下:

<style name="DialogWindowTitle.DeviceDefault">

<item name="android:maxLines">1</item>

<item name="android:scrollHorizontally">true</item>

<item name="android:textAppearance">@style/DialogWindowTitle</item>

</style>

3 设置对话框主题。

接下来,我们编写我们的对话框主题,在这里指定标题的主题。由于一些属性并不是public的,所以我们需要继承自原来的某个style,代码如下:

<!--Dialog主题-->

<style name="Theme.DeviceDefault.Dialog" parent="@android:style/Theme.DeviceDefault.Light.Dialog">

<item name="android:windowTitleStyle">@style/DialogWindowTitle.DeviceDefault</item>

</style>

4自定义App的主题。

接下来,我们需要在我们的App theme中指定我们的对话框使用这种主题,所以需要定义一个App theme。同样由于App theme的许多属性并不是public的(比如下面要提到的标题下面的那条蓝线),所以我们要继承自一个原生的style。这里我根据程序需要选择了Theme.Holo.Light.NoActionBar,代码如下:

<style name="ParkingTheme" parent="@android:style/Theme.Holo.Light.NoActionBar">

<item name="android:dialogTheme">@style/Theme.DeviceDefault.Dialog</item>

</style>

5 指定App主题

我们需要在AndroidManifest.xml文件中,指定我们的app主题。这步很简单,只需要在application标签中指定android:theme的值即可,如下:

android:theme="@style/ParkingTheme"

6 编写AlertDialog主题。

我们无法直接继承系统主题里的AlertDialog的style。如把parent指定为Theme.DeviceDefault.Dialog.Alert,Theme.Holo.Dialog.Alert,Theme.DeviceDefault.Light.Dialog.Alert或Theme.Holo.Light.Dialog.Alert,都会导致编译不过。所以我们需要继承自Dialog的style。在这里我以Theme.Holo.Light.Dialog为例,代码如下:

<!--AlderDialog主题-->

<style name="Theme.DeviceDefault.Dialog.Alert" parent="@android:style/Theme.Holo.Light.Dialog">

<item name="android:windowBackground">@android:color/transparent</item>

<item name="android:windowTitleStyle">@style/DialogWindowTitle.DeviceDefault</item>

<item name="android:windowContentOverlay">@null</item>

<item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>

<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>

</style>

7 指定AlertDialog的主题。

我们需要在第4步所说的自定义的AppTheme中,添加一行代码来指定要使用的AlertDialog的style,代码如下:

<item name="android:alertDialogTheme">@style/Theme.DeviceDefault.Dialog.Alert</item>

8修改标题下面的蓝色线。

表示这条蓝色的线的叫做titleDivider,我们可以通过getResources()的API来获取它的IP,然后设置颜色。代码如下:

public static final void dialogTitleLineColor(Dialog dialog, int color) {

Context context = dialog.getContext()

int divierId = context.getResources().getIdentifier("android:id/titleDivider", null, null)

View divider = dialog.findViewById(divierId)

divider.setBackgroundColor(color)

这行代码对于自定义的Dialog,可以在setContentView之后调用。但是对于AlertDialog,必须在show()方法被调用之后才可以去调用,否则会报错。

Android是一种基于Linux的自由及开放源代码的 *** 作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。

尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安智”。Android *** 作系统最初由Andy Rubin开发,主要支持手机。2005年7月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。

随后Google以Apache开源许可证的授权方式,发布了Android的源代码。第一部Android智能手机发布于2008年10月。

Android逐渐扩展到平板电脑及其他领域上,如电视、数码相机、游戏机等。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。

2013年的第四季度,Android平台手机的全球市场份额已经达到78.1%。2013年09月24日谷歌开发的 *** 作系统Android在迎来了5岁生日,全世界采用这款系统的设备数量已经达到10亿台。

第一步: 给Dialog设置一个风格主题: 无边框全透明背景

在res->valus->styles.xml 下新建一个styles

    <style name="dialog" parent="android:style/Theme.Dialog">

            <!--背景颜色及和透明程度-->

            <item name="android:windowBackground">@android:color/transparent</item>

            <!--是否去除标题 -->

            <item name="android:windowNoTitle">true</item>

            <!--是否去除边框-->

            <item name="android:windowFrame">@null</item>

            <!--是否浮现在activity之上  -->

            <item name="android:windowIsFloating">false</item>

            <!--背景是否模糊-->

            <item name="android:backgroundDimEnabled">false</item>

        </style>

第二步:新建自定义view 类 继承Dialog,在构造方法中引用刚才写好的styles(粗体部分)

public class MyDialog extends Dialog {

     public LoginRestltDialog(@NonNull Context context) {

                 //引用样式

                   super(context, R.style.dialog )

               }

     @Override

      protected void onCreate(Bundle savedInstanceState) {

               super.onCreate(savedInstanceState)

               //引入布局

                setContentView(R.layout.dialog)

    }

   //定义其他需要的方法

}

第三步:创建布局

<?xml version="1.0" encoding="utf-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:background="#11ffffff">

    <LinearLayout

        android:layout_width="260dp"

        android:layout_height="wrap_content"

        android:layout_centerInParent="true"

        android:background="@drawable/dialog_share"

        android:orientation="vertical">

        <TextView

            android:id="@+id/title"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_gravity="center"

            android:layout_margin="15dp"

            android:gravity="center"

            android:text="消息提示"

            android:textColor="#38ADFF"

            android:textSize="16sp" />

        <TextView

            android:id="@+id/message"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content"

            android:layout_marginLeft="20dp"

            android:layout_marginRight="20dp"

            android:text="提示消息" />

        <View

            android:layout_width="match_parent"

            android:layout_height="1px"

            android:layout_marginTop="15dp"

            android:background="#E4E4E4" />

        <LinearLayout

            android:layout_width="match_parent"

            android:layout_height="40dp"

            android:orientation="horizontal">

            <Button

                android:id="@+id/no"

                android:layout_width="0dp"

                android:layout_height="match_parent"

                android:layout_marginLeft="10dp"

                android:layout_weight="1"

                android:background="@null"

                android:gravity="center"

                android:singleLine="true"

                android:text="No"

                android:textColor="#7D7D7D"

                android:textSize="16sp" />

            <View

                android:layout_width="1px"

                android:layout_height="match_parent"

                android:background="#E4E4E4" />

            <Button

                android:id="@+id/yes"

                android:layout_width="0dp"

                android:layout_height="match_parent"

                android:layout_marginRight="10dp"

                android:layout_weight="1"

                android:background="@null"

                android:gravity="center"

                android:singleLine="true"

                android:text="Yes"

                android:textColor="#38ADFF"

                android:textSize="16sp" />

        </LinearLayout>

    </LinearLayout>

</RelativeLayout>

第四步:定义dialog的背景框

<?xml version="1.0" encoding="utf-8"?>

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 

    <solid android:color="#ffffff" /> 

    <stroke 

        android:width="0.8dp" 

        android:color="#ffffff" /> 

    <!-- 圆角 --> 

    <corners android:radius="8dp" /> 

</shape>

最后在需要的地方调用即可

如果喜欢的话还可以给Activity设置宽高

Activity默认是屏幕居中显示,通过gravity属性可以设置位置

通过设置 x , y 来调整具体位置


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11272818.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存