当element不是LinearLayout中的最后一个时,setVisibility(View.VISIBLE)不起作用

时间:2014-01-24 12:12:46

标签: android android-layout android-linearlayout

我正在以编程方式更新我的界面,以便在我的主菜单中显示ImageView。当ImageView是其父级内部的最后一个(LinearLayout)时,它可以正常工作。但是当它是Layout中的第一个项目或者是其他元素之间时它不起作用。

这是我的布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/black"
android:gravity="right"
tools:context=".Actualidad" >

<ImageView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:scaleType="fitStart"
    android:src="@drawable/main_bg" />

<ScrollView
    android:id="@+id/iSV_Botones_drc"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_marginRight="5dp"
    android:fillViewport="true" >

    <LinearLayout
        android:id="@+id/drc_menu"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_gravity="right"
        android:gravity="right"
        android:orientation="vertical" >



        <ImageView
            android:id="@+id/iv_main_actualidad"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:maxWidth="9dp"
            android:src="@drawable/btnmenuiconactualidad" />


         <ImageView
            android:id="@+id/iv_main_discos_giras"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginBottom="15dp"
            android:layout_marginTop="@dimen/menu_items_margin_top"
            android:src="@drawable/btnmenuicondiscos"
            android:visibility="gone" />

        <ImageView
            android:id="@+id/iv_main_espectaculos"
            android:layout_width="wrap_content"
            android:layout_height="0dp"
            android:layout_marginTop="@dimen/menu_items_margin_top"
            android:layout_weight="1"
            android:src="@drawable/btnmenuiconeventos" />


    </LinearLayout>
</ScrollView>

这是我设置可见ImageView(iv_main_discos_giras)的代码:

private Handler mResultHandler = new Handler() {
@Override
    public void handleMessage(Message msg) {
        mDiscosGiras.setVisibility(View.VISIBLE);       
        Log.d(getClass().getSimpleName(), "Item visible!!");
    }
};

正确显示日志,并且mDiscosGiras已经初始化:

@InjectView(R.id.iv_main_discos_giras) ImageView mDiscosGiras; here

1 个答案:

答案 0 :(得分:0)

我发现黑客工作得非常好。

我只是暂时隐藏该项目下面的所有项目。然后我将所有项目从上到下设置为可见。

注意:这也适用于LinearLayout中的android:animateLayoutChanges="true",动画效果很好。

private Handler mResultHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
        mEspectaculos.setVisibility(View.GONE);
        mDiscosGiras.setVisibility(View.VISIBLE);       
        mEspectaculos.setVisibility(View.VISIBLE);
        Log.i(getClass().getSimpleName(), "Ponemos el tema visible");
    }
};