使用 <include> 标签修改包含在另一个布局中的布局中的视图

Posted

技术标签:

【中文标题】使用 <include> 标签修改包含在另一个布局中的布局中的视图【英文标题】:Modify View in a layout included in another layout using <include> tag 【发布时间】:2022-01-08 23:21:32 【问题描述】:

我有一个布局:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:background="@color/titlebar_bg"
    tools:showIn="@layout/activity_main" >

    <ImageView android:layout_
               android:layout_
               android:src="@drawable/gafricalogo" />
</FrameLayout>

我已将它包含在另一个布局中:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_
    android:layout_
    android:background="@color/app_bg"
    android:gravity="center_horizontal">

    <include layout="@layout/titlebar"/>

    <TextView android:layout_
              android:layout_
              android:text="@string/hello"
              android:padding="10dp" />

    ...

</LinearLayout>

如何在包含的布局中修改ImageView的属性。

有一个类似的问题here。答案说它只能在运行时完成,但没有解释如何以编程方式从包含的布局中获取 ImageView 的引用。

请解释一下如何做到这一点。

【问题讨论】:

【参考方案1】:

在视图中添加一个 id:

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_
    android:layout_
    android:background="@color/titlebar_bg"
    tools:showIn="@layout/activity_main" >

    <ImageView
        android:id="@+id/myImageView"
        android:layout_
        android:layout_
        android:src="@drawable/gafricalogo" />
</FrameLayout>

从你的活动中:

ImageView myImageView = (ImageView) findViewById(R.id.myImageView);

【讨论】:

我需要从包含的布局访问我的 Activity 中的 ImageView,而不是包含它的主布局。 它应该像这样工作:myImageView 将从包含的布局中引用 ImageView。然后活动可以修改其属性,如 myImageView.visibility = View.HIDDEN 或其他。你测试了吗?发生了什么?

以上是关于使用 <include> 标签修改包含在另一个布局中的布局中的视图的主要内容,如果未能解决你的问题,请参考以下文章

JSP的标签技术

JSP动作标签

jsp:include标签与include指令的区别

4,VTemplate模板引擎的使用--进阶篇

20160331javaweb之JSP 标签技术

JSP回顾