使用 <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> 标签修改包含在另一个布局中的布局中的视图的主要内容,如果未能解决你的问题,请参考以下文章