栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何以编程方式使活动像对话框一样主题?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何以编程方式使活动像对话框一样主题?

背景

Activity
后面的
Acivity
绘制,如果根据其前景活动的主题
AndroidManifest.xml
是对话;
否则,Android操作系统将 不会 在其
Activity
后面绘制(可能是为了节省内存,因为通常无论如何都不会看到它)。

为了利用这一点,我们将

Acitvity
清单的主题设置为清单中的对话框,以使android
os在其
Activity
后方进行绘制,但随后,以编程方式将
Activity
的主题设置为运行时所需的主题。

github上的例子

我做了一个例子,并将其放在github上。

讲解

步骤1:
在中为您的应用程序创建两个自定义主题

styles.xml
。一个用于正常活动,另一个用于对话活动。自定义对话框主题必须从也是对话框的基本主题继承,这一点很重要。在我的情况下,父主题为
base.Theme.AppCompat.Light.Dialog.FixedSize
。这是我的
styles.xml

<resources>    <!-- custom normal activity theme -->        <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">    </style>    <!-- custom dialog activity theme -->    <style name="AppTheme.Dialog" parent="base.Theme.AppCompat.Light.Dialog.FixedSize">        <!-- removing the dialog's action bar -->        <item name="windowActionBar">false</item>        <item name="windowNoTitle">true</item>    </style></resources>

步骤2: 在中

AndroidManifest.xml
,将相关主题设置
Activity
为任何对话框主题。这使android
os认为
Activity
对话框是一个对话框,因此它将在对话框
Activity
后面绘制,而不是将其涂黑。就我而言,我使用
Theme.AppCompat.Dialog
。以下是我的
AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"          package="com.example.eric.questiondialog_artifact">    <application        android:allowBackup="true"        android:icon="@mipmap/ic_launcher"        android:label="@string/app_name">        <activity android:name=".DialogActivity" android:label="@string/app_name" android:theme="@style/Theme.AppCompat.Dialog"> <-- importANT!!! --> <intent-filter>     <action android:name="android.intent.action.MAIN"/>     <category android:name="android.intent.category.LAUNCHER"/> </intent-filter>        </activity>    </application></manifest>

步骤3: 在实际活动中,以编程方式将主题设置为常规活动的主题或对话框的主题。我

DialogActivity.java
的如下:

package com.example.eric.questiondialog_artifact;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;public class DialogActivity extends AppCompatActivity{    @Override    protected void onCreate(Bundle savedInstanceState)    {        setTheme(R.style.AppTheme_Dialog); // can either use R.style.AppTheme_Dialog or R.style.AppTheme as deined in styles.xml        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_dialog);    }}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483429.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号