如何在包含的布局中设置 android ImageView 可见性?

我们在我们的应用程序中使用 android API 17。我定义了一个包含两个图像视图的布局,如下所示:


<RelativeLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/image_container_layout"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content">


<ImageView

        android:id="@+id/image_1"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

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


<ImageView

        android:id="@+id/image_2"

        android:layout_marginTop="3dp"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"

        android:layout_below="@+id/image_container_layout"

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

此布局包含在另一个布局中,如下所示:


<RelativeLayout

    xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    style="@style/wizard_content_style"

    tools:context=".ui.Wizard"

    android:orientation="vertical"

    android:gravity="center_vertical"

    android:layout_gravity="center_vertical"

    >



<include layout="@layout/image_container_layout"

         android:id="@+id/included_view"

            />

包含布局的原因是我们想在另外两个布局中重用它。现在基于某些条件我想隐藏或显示里面的图像视图image_container_layout。


我正在调试这段代码,我确信代码正在运行。日志消息也打印在 Logcat 中,但图像没有任何变化。此外,始终显示两个图像。我想知道在使用包含的布局时是否需要做些什么?感谢您提前提供帮助。根据我在下面得到的答案,似乎膨胀视图会创建一个新对象,因此,可见性的变化不会显示在用户界面上。那么问题是,如果我们有一个向导,并且在向导的 3 个不同页面内我想要一个图像,并且根据某些条件我想显示或隐藏图像,最好的解决方案是什么?我的意思是我想重用负责隐藏和显示图像的代码,而不管向导的哪个页面处于活动状态。


慕田峪9158850
浏览 116回答 3
3回答

LEATH

你为什么要复杂化这么多代码。如果您在 xml 中包含一些布局,那么您也可以像 xml 一样使用这些小部件。无需充气。ImageView&nbsp;image_2&nbsp;=&nbsp;findViewById(R.id.image_2); image_2.setVisbility(Visible.GONE);

慕后森

代码不在活动中,但无论它在哪里,你都为你当前显示的视图增加了一个新的布局: containerLayout = (ViewGroup) ((Activity) getAndroidContext()).getLayoutInflater().inflate(R.layout.image_container_layout, null);当您尝试更改这些图像的可见性时,它实际上起作用了,我认为是这样。但是,如果您的活动或片段布局包含image_container_layout您可能会看到那些图像。我想知道您如何处理膨胀视图containerLayout。您是否将它添加到任何其他视图的内部。如果您不这样做,您将看不到它。

倚天杖

你必须像这样使用它:View included_view1 = findViewById(R.id.included_view1);ImageView image_1 = included_view1.findViewById(R.id.image_1);ImageView image_2 = included_view1.findViewById(R.id.image_2);image_1.setVisibility(View.VISIBLE);image_1.setVisibility(View.GONE);image_2.setVisibility(View.VISIBLE)image_2.setVisibility(View.GONE)View included_view2 = findViewById(R.id.included_view2);ImageView image_11 = included_view2.findViewById(R.id.image_1);ImageView image_22 = included_view2.findViewById(R.id.image_2);image_11.setVisibility(View.VISIBLE);image_11.setVisibility(View.GONE);image_22.setVisibility(View.VISIBLE)image_22.setVisibility(View.GONE)如果您想多次使用相同的布局,上面的代码将很有帮助。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java