android:visibility =“gone”无法清除某些设备上的空间:

时间:2016-11-15 13:50:30

标签: android android-layout visibility

我的布局中有以下部分布局:

    .....
    <LinearLayout
    android:id="@+id/llBottom"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:layout_alignParentBottom="true"
    android:orientation="vertical">

    <RelativeLayout
        android:id="@+id/llGameInformation"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginBottom="5dp"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp"
        android:gravity="center_vertical">

        <ImageButton
            android:id="@+id/imgBtnVolume"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:background="@drawable/icon_button_selector"
            android:src="@drawable/icon_button_sound" />
        <!--app:srcCompat="@drawable/icon_button_sound"-->

        <me.grantland.widget.AutofitTextView
            android:id="@+id/tvGameCardText"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textColor="@color/cl_game_screen_card_name_text_color"
            android:textSize="30dp"
            tools:text="card name"
            android:gravity="center"
            autofit:minTextSize="22dp"
            android:layout_centerInParent="true"
            android:textAppearance="@style/TextAppearance.GothamBook"
            android:layout_toLeftOf="@+id/imgBtnShowCards"
            android:layout_toRightOf="@+id/imgBtnVolume"/>

        <ImageButton
            android:id="@+id/imgBtnShowCards"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentEnd="true"
            android:layout_alignParentRight="true"
            android:background="@drawable/icon_button_selector"
            app:srcCompat="@drawable/icon_button_view"/>
    </RelativeLayout>

    <com.google.android.gms.ads.AdView
        android:id="@+id/adView"
        android:visibility="gone"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        ads:adSize="FLUID"
        ads:adUnitId="@string/banner_ad_unit_id">
    </com.google.android.gms.ads.AdView>
</LinearLayout>
....

正如您可以理解的那样,名称 llBottom LinearLayout,它应该位于屏幕的底部,而且它是。{在其中,我有RelativeLayout包含多个视图,在其下面我放置了AdView

我使用visibility =“off”启动AdView,我打算根据服务器首选项显示它。

问题是:虽然此功能与Nexus 5X相同,但AdView已被删除, llGameInformation 是布局中最低的ViewGroup,另一方面是Galaxy设备上的ViewGroup侧面AdView不可见但仍占用空间,因此 llGameInformation 下方有一个空白区域。

有人知道处理这个问题的正确方法是什么?所以所有设备上都不会留下空白空间?

1 个答案:

答案 0 :(得分:1)

您应该使用FrameLayout打包AdView并将其可行性设置为gone,视图可能会改变其自身的可见性。

如果你想更深入地潜水,或者之前没有工作,你可以写一件服装FrameLayout,看看有人真的试图改变它不是你的能见度,在这种情况下你就可以调试它并阻止它,作为你的观点。

如果你不喜欢,有人无法改变你的FrameLayout生存能力。