Android - 如何在调用 setVisible(View.GONE) 后保持视图位置不改变?

问题描述 投票:0回答:2

我有一个RootLayout[可以设置任意布局],如:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mainRootLayout"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" >

    <ImageButton
        android:id="@+id/ibtnHidden"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"

        android:src="@android:drawable/ic_menu_add" />

    <ImageButton
        android:id="@+id/ibtnPlay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/ibtnHidden"
        android:layout_marginLeft="9dp"
        android:layout_toRightOf="@+id/ibtnHidden"
        android:src="@android:drawable/ic_media_play" />

    <ImageButton
        android:id="@+id/ibtnPreference"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/ibtnHidden"
        android:layout_marginLeft="9dp"
        android:layout_toRightOf="@+id/ibtnPlay"
        android:src="@android:drawable/ic_menu_preferences" />

    <ImageButton
        android:id="@+id/ibtnExit"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/ibtnHidden"
        android:layout_marginLeft="9dp"
        android:layout_toRightOf="@+id/ibtnPreference"
        android:src="@android:drawable/ic_menu_close_clear_cancel" />

</RelativeLayout>

ibtn_Hidden = (ImageButton) view.findViewById(R.id.ibtnHidden);
ibtn_Play = (ImageButton) view.findViewById(R.id.ibtnPlay);
ibtn_Preference = (ImageButton) view.findViewById(R.id.ibtnPreference);
ibtn_Exit = (ImageButton) view.findViewById(R.id.ibtnExit);

当我调用“ibtn_Play.setVisible(View.GONE);ibtn_Preference.setVisible(View.GONE);ibtn_Exit.setVisible(View.GONE)”时,ibtn_Hidden的位置会改变。

我猜是因为其他的都被暂时移除了,视图的大小也发生了变化,而且已经接近变化的中间了。

如何保持ibtn_Hidden在调用setVisible(View.GONE)后位置不改变,而其他的[ibtn_Play ibtn_Preference ibtn_Exit]不占用空间?谢谢~

android layout view
2个回答
1
投票

如果您希望视图不可见,但仍保持其布局影响,您可以使用此:

imageButton2.setVisibility(View.INVISIBLE);

希望这有帮助:)


0
投票

是的,如果你的父位置干扰我使用view.gone,你可以使用view.visible,所以我的父位置干扰它上升,但在view.visible中它保持不变

© www.soinside.com 2019 - 2024. All rights reserved.