framelay的layout_gravity和z-order无法正常工作

时间:2014-10-21 14:41:29

标签: android xml android-layout

我是stackoverflow的新手所以请温柔一点:)

我正在将新的最新应用视图移植到现有的SystemUI中,所以我使用的是xml和smali而不是Java。但是我的问题与布局xmls有关,所以应该在这里问一下。具体来说,我将ParanoidAndroid的新Android L风格的最新版本移植到我们的SystemUI中,因此它是新的cardstack视图。这是我的status_bar_recent_panel_cardstack.xml,它设置了最近的视图,并包含滚动视图,其中包含实际的cardstack:

<?xml version="1.0" encoding="utf-8"?>
<com.android.systemui.recent.RecentsPanelView android:id="@id/recents_root" android:layout_width="fill_parent" android:layout_height="fill_parent" android:foreground="@drawable/bg_protect_transparent" systemui:recentItemLayout="@layout/status_bar_recent_item"
  xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:systemui="http://schemas.android.com/apk/res/com.android.systemui">
    <FrameLayout android:id="@id/recents_bg_protect" android:background="@drawable/status_bar_recents_background_cardstack" android:fitsSystemWindows="true" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_alignParentBottom="true" android:clipChildren="false">
        <com.android.systemui.recent.RecentsVerticalScrollView android:layout_gravity="start|bottom|center" android:id="@id/recents_container" android:scrollbars="none" android:fadingEdge="vertical" android:fadingEdgeLength="@dimen/status_bar_recents_scroll_fading_edge_length" android:clipChildren="false" android:clipToPadding="false" android:layout_width="fill_parent" android:layout_height="wrap_content" android:stackFromBottom="true" android:divider="@null" android:layout_marginEnd="0.0dip">
            <LinearLayout android:orientation="vertical" android:id="@id/recents_linear_layout" android:fitsSystemWindows="true" android:clipChildren="false" android:clipToPadding="false" android:layout_width="fill_parent" android:layout_height="wrap_content" />
        </com.android.systemui.recent.RecentsVerticalScrollView>
        <include android:id="@id/recents_no_apps" android:visibility="invisible" android:layout_width="fill_parent" android:layout_height="fill_parent" layout="@layout/status_bar_no_recent_apps" />
        <ImageView android:layout_gravity="top|right|center" android:id="@id/recents_clear" android:clickable="true" android:layout_width="50.0dip" android:layout_height="50.0dip" android:src="@drawable/ic_recents_clear" android:scaleType="center" />
    </FrameLayout>
</com.android.systemui.recent.RecentsPanelView>

这是布局,它定义了堆栈中的每张卡片,以防它与我的问题有关:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@id/recent_item" android:padding="@dimen/status_bar_recents_card_margin" android:clipChildren="true" android:layout_width="fill_parent" android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android">
<RelativeLayout android:id="@id/app_thumbnail" android:background="@drawable/status_bar_recent_card_shadow" android:layout_width="fill_parent" android:layout_height="fill_parent">
    <ImageView android:id="@id/app_thumbnail_image" android:paddingTop="@dimen/status_bar_recents_app_color_bar_height" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="centerCrop" />
    <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content">
        <LinearLayout android:orientation="horizontal" android:id="@id/app_top_colored_bar" android:background="@color/status_bar_recents_app_bar_color" android:layout_width="fill_parent" android:layout_height="@dimen/status_bar_recents_app_color_bar_height">
            <ImageView android:layout_gravity="center_vertical" android:id="@id/app_icon" android:layout_width="wrap_content" android:layout_height="@dimen/status_bar_recents_app_color_bar_icon_size" android:layout_margin="@dimen/status_bar_recents_app_color_bar_icon_margin" android:scaleType="centerInside" android:adjustViewBounds="true" android:maxWidth="@dimen/status_bar_recents_app_icon_max_width" android:maxHeight="@dimen/status_bar_recents_app_icon_max_height" android:layout_weight="0.0" />
            <TextView android:textSize="@dimen/status_bar_recents_app_color_bar_label_size" android:textColor="@color/status_bar_recents_app_label_color_dark" android:ellipsize="marquee" android:layout_gravity="center_vertical" android:id="@id/app_label" android:fadingEdge="horizontal" android:fadingEdgeLength="@dimen/status_bar_recents_text_fading_edge_length" android:layout_width="@dimen/status_bar_recents_app_label_width" android:layout_height="wrap_content" android:scrollHorizontally="true" android:singleLine="true" android:layout_weight="1.0" android:importantForAccessibility="no" android:textAlignment="viewStart" android:layout_marginStart="@dimen/status_bar_recents_app_label_left_margin" android:layout_toEndOf="@id/app_icon" android:layout_alignParentStart="true" />
        </LinearLayout>
        <ImageView android:id="@id/app_thumbnail_border" android:background="@drawable/status_bar_recent_card_border" android:layout_width="fill_parent" android:layout_height="wrap_content" />
    </RelativeLayout>
</RelativeLayout>
<View android:id="@id/recents_callout_line" android:visibility="gone" android:layout_width="0.0dip" android:layout_height="0.0dip" />
<TextView android:id="@id/app_description" android:visibility="gone" android:layout_width="0.0dip" android:layout_height="0.0dip" />
</RelativeLayout>

我有两个问题。首先,Clear All按钮(在第一个布局中设置为recents_clear imageView)不会出现在cardstack上方,而是隐藏在其后面,因此无法点击。为什么定义项目的Z顺序无法被识别,是否有办法将其强制到前面?

图像(清除所有按钮右下方被卡片堆叠遮挡) - https://lh3.googleusercontent.com/-ItnAYg0eQ3Y/VEQqt7BvBGI/AAAAAAAAC7Y/lZ3S1NgOUjk/w492-h875-no/2014-10-19.jpg

其次,我添加了通过对卡片宽度应用比例因子以编程方式缩小cardstack的功能。然而,当我减小卡片大小时,我想要将堆栈居中,但无论layout_gravity应用于两个布局中的任何或所有元素,cardstack仍保持与最终父级的左侧对齐(减少填充)。如何将缩小的卡片放在中心位置?

图片(缩小后的cardstack仍然在父级中保持对齐) - https://lh4.googleusercontent.com/-SbinxvpcOyQ/VES_O2LMjGI/AAAAAAAAC84/iKzsnM92_VI/w492-h875-no/8802401609983476689

0 个答案:

没有答案