加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

关于布局xml文件中view的id重复的问题

发布时间:2020-12-16 02:07:51 所属栏目:百科 来源:网络整理
导读:今天遇到一个很奇葩的问题,关于id重复的,记录下。 页面的整体布局比如是这样: ?xml version="1.0" encoding="utf-8"?LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:

今天遇到一个很奇葩的问题,关于id重复的,记录下。

页面的整体布局比如是这样:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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="@color/light_background"
    android:orientation="vertical"

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

	<com.shenhuniurou.widget.FilterView
		android:id="@+id/filter_view"
		android:layout_width="match_parent"
		android:layout_height="45dp"/>  

	<ListView
		android:id="@+id/listview"
		android:layout_width="match_parent"
		android:layout_height="match_parent"
		android:scrollbars="vertical"
		android:dividerHeight="10dp"/>        
       
</LinearLayout>

可以看到,其中有一个用于展示数据列表的ListView,它的id为listview,FilterView是我自定义的一个分类筛选的view,它也有自己的布局,关键是在它的布局中,我也放了一个ListView用来展示分类数据,巧了,它的id我也没注意,写成了listview,如下:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:layout_width="match_parent"
	android:layout_height="match_parent">

	<View
		android:id="@+id/view_mask_bg"
		android:layout_width="match_parent"
		android:layout_height="match_parent"
		android:visibility="gone"
		android:background="@color/halftransparent"/>

	<LinearLayout
		android:id="@+id/ll_content_list_view"
		android:layout_width="match_parent"
		android:layout_height="360dp"
		android:orientation="horizontal"
		android:visibility="visible">

		<ListView
			android:id="@+id/lv_category"
			android:layout_width="match_parent"
			android:layout_height="match_parent"
			android:background="#e0e0e0"
			android:divider="#d9d9d9"
			android:dividerHeight="1dp"
			android:scrollbars="none"
			android:visibility="gone"/>

	</LinearLayout>
	
</FrameLayout>

然后问题来了,我是用的ButterKnife获取view实例的,as编译也没报错,列表数据的listview设置了adapter之后,数据一直无法显示出来,仔细检查代码逻辑也没发现问题,再检查xml布局,发现listview的id一样,修改一个之后,运行正常了。

得出的结论就是,在自定义view里面使用了xml布局,在整体页面的xml中使用自定义view也就相当于includemerge了自定义view中的xml,,虽然编译不会报错,但是findViewById时始终得到的是页面布局顺序中相同id的第一个view的实例。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读