我可以在android中控制z轴吗?

时间:2013-03-20 15:49:47

标签: android android-layout

在Android中控制Z轴的最佳方法是什么?

这里:Layout Layers? Z-Axis?,它声明最好的方法是使用FrameLayout。我,我设法使用具有以下结构的RelativeLayout:

RelativeLayout
-- LinearLayout
-- -- View v1 (bottom)
-- -- View v2 (bottom)
-- LinearLayout
-- -- View v3 (top)

但这并没有完全回答我的问题。当我希望View v1始终位于顶部时会发生什么,但View v3始终位于View v2之上。

像这样:

RelativeLayout
-- LinearLayout
-- -- View v1 z=1
-- -- View v2 z=3
-- LinearLayout
-- -- View v3 z=2

(其中1在2之上,在3之上)

这很容易在Flex中完成...可以在Android开发中完成吗?

2 个答案:

答案 0 :(得分:1)

使用FrameLayout,而不是RelativeLayout或LinearLayout。

无论如何在Android中拥有顶级视图真的没有任何意义。使用View.setVisibility(View.GONE)告诉Android不要绘制视图(它不会为它保留空间)和View.setVisibility(View.VISIBLE)来绘制它。

答案 1 :(得分:1)

您可以在.xml文件中定义translationZ参数。 值越高表示朝向用户的位置越近":

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"

    android:translationZ="2dp">
</LinearLayout>

<ImageView
    android:layout_marginTop="-15dp"
    android:layout_marginBottom="-22dp"
    android:translationZ="1dp"

    android:layout_width="match_parent"
    android:layout_height="50dp"

    />

<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />

我发现这在将ListView移动到具有透明度的图形下方(与负边距相结合)时非常有用,使其看起来像消失在线后面,如下所示:

Example for usage of translationZ