我有一个活动A,它有一个“向下”按钮(见上图)。当我按下此按钮时,我想在活动A的顶部启动活动B,因此底部的一些活动A仍然可见。活动B可以反过来启动一些其他活动(C,D等)但是它们只显示在与B相同的屏幕区域内。任何人都知道这是否可能以及我如何能够实现它?
修改:我知道我可以将
android:theme="@android:style/Theme.Dialog"
添加到我的活动清单中,但据我所知,这会显示在屏幕中央,而不是我可以调整大小我喜欢它。如果我错了,请纠正我......
答案 0 :(得分:5)
这是应该在活动a
之上的活动的xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#00000000" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0"
android:layout_weight="0.6"
android:background="#000000" >
//use this for your new activity contents
</LinearLayout>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="0"
android:layout_weight="0.4"
android:background="#00000000" >
//this is empty
</LinearLayout>
</LinearLayout>
现在在清单中,用于活动B,C,......等:
<activity
android:label="@string/app_name"
android:name=".ActivityB"
android:theme="@style/Theme.Transparent"
android:screenOrientation="portrait" >
values / styles.xml 中的:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="Theme.Transparent" parent="android:Theme.NoTitleBar">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@drawable/theme_transparent</item>
</style>
</resources>
最后在 drawable / theme_transparent.xml :
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" >
<solid android:color="#00000000" ></solid>
</shape>
答案 1 :(得分:3)
您需要使用的是Fragments.
碎片可用于填充屏幕的一部分,同时完全在另一个屏幕上执行其他操作。
在您的示例中,您可以创建包含两个Fragments
的主活动。一个Fragment
控制“A活动”,另一个控制“B活动”,其他控制“B活动”。
通过按下按钮将“B活动”区域中的当前Fragment
替换为另一个,您可以实现您正在寻找的行为。至少,这就是我在我的应用程序中所做的,包含主要内容区域和音乐播放器。当主要内容发生变化时,音乐播放器会保持原位。
可悲的是,我现在无法提供任何示例代码,但这里有一个可以帮助您入门的教程:
如果您使用的Android版本低于3.0,则可以使用兼容性软件包。
http://developer.android.com/sdk/compatibility-library.html
http://mobile.tutsplus.com/tutorials/android/android-compatibility-working-with-fragments/