为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕田峪9158850 2023-04-26 13:56:56
我们在我们的应用程序中使用 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 个不同页面内我想要一个图像,并且根据某些条件我想显示或隐藏图像,最好的解决方案是什么?我的意思是我想重用负责隐藏和显示图像的代码,而不管向导的哪个页面处于活动状态。
查看完整描述

3 回答

?
LEATH

TA贡献1936条经验 获得超6个赞

你为什么要复杂化这么多代码。如果您在 xml 中包含一些布局,那么您也可以像 xml 一样使用这些小部件。无需充气。

ImageView image_2 = findViewById(R.id.image_2);
image_2.setVisbility(Visible.GONE);


查看完整回答
反对 回复 2023-04-26
?
慕后森

TA贡献1802条经验 获得超5个赞

代码不在活动中,但无论它在哪里,你都为你当前显示的视图增加了一个新的布局: containerLayout = (ViewGroup) ((Activity) getAndroidContext()).getLayoutInflater().inflate(R.layout.image_container_layout, null);

当您尝试更改这些图像的可见性时,它实际上起作用了,我认为是这样。但是,如果您的活动或片段布局包含image_container_layout您可能会看到那些图像。

我想知道您如何处理膨胀视图containerLayout。您是否将它添加到任何其他视图的内部。如果您不这样做,您将看不到它。


查看完整回答
反对 回复 2023-04-26
?
倚天杖

TA贡献1828条经验 获得超3个赞

你必须像这样使用它:


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)

如果您想多次使用相同的布局,上面的代码将很有帮助。


查看完整回答
反对 回复 2023-04-26
  • 3 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信