单击按钮即可创建自定义视图。自定义视图为:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="100dp"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/friendImage"
android:layout_width="100dp"
android:layout_height="match_parent"
android:contentDescription="Person Image"
app:srcCompat="@drawable/person2" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical">
<TextView
android:id="@+id/friendName"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="Name of friend"
android:textAlignment="center"
android:textColor="#000000"
android:textSize="20sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="horizontal">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/interactionInPersonIcon"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="3dp"
android:layout_weight="1"
app:srcCompat="@drawable/in_person" />
<TextView
android:id="@+id/interactionInPersonText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="299"
android:textAlignment="center" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/interactionVideoIcon"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="3dp"
android:layout_weight="1"
android:tint="#292828"
app:srcCompat="@android:drawable/presence_video_online" />
<TextView
android:id="@+id/interactionVideoText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="299"
android:textAlignment="center" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/interactionTextIcon"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
app:srcCompat="@drawable/text_icon" />
<TextView
android:id="@+id/interactionTextText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="299"
android:textAlignment="center" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:orientation="horizontal">
<ImageView
android:id="@+id/interactionPhoneIcon"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:tint="#353535"
app:srcCompat="@drawable/phone_icon" />
<TextView
android:id="@+id/interactionPhoneText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="299"
android:textAlignment="center" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</LinearLayout>
用户在文本字段中输入一些文本(名称(,然后按下按钮创建新的自定义视图(朋友列表中的朋友(。
我想做的是访问嵌入在视图中的好友姓名文本视图。它的ID是"@ID+/friendName",但我似乎不知道如何访问它。
所以我想问题是-如果我知道FriendView元素的ID,我该如何在其中获得friendName TextView元素。
还有一个问题是,一旦创建了另一个自定义视图(新朋友(,每个自定义视图中嵌入视图的这些ID将是相同的,唯一不同的因素是自定义视图ID将不同。这些是在运行时随机生成的吗?
也许通过ID获取这个嵌入视图实际上不是最好的方法?
非常感谢您提前提供的帮助!
用户在文本字段中输入一些文本(名称(,然后按下按钮创建?>新的自定义视图(好友列表中的好友(。
我正在尝试访问嵌入在视图中的好友姓名文本视图。>它的ID是"@ID+/friendName",但我似乎不知道如何访问它。所以我想问题是-如果我知道FriendView元素的ID,那么我如何>在其中获得friendName TextView元素。
您可以在您创建的自定义视图的新实例(您将添加到视图层次结构的实例(上使用findViewById
来找到friendName
视图
还有一个问题,即一旦创建了另一个自定义视图(新朋友(,每个自定义视图中嵌入视图的ID将相同,唯一不同的因素是自定义视图ID将不同。这些是在运行时随机生成的吗?
没有。。它们不是在运行时随机生成的。它们将是您已经分配给视图的内容(例如friendName
(。
好吧,所以我在尝试做这件事时没有意识到什么,我自己也很困惑。
我的自定义视图XML文件为我感兴趣的TextView创建了id,例如"@id+/friendName"。这意味着R.id.friendName已填充。然而,我没有意识到,让我困惑的更多是这个friendName ID出现的上下文。
findViewById方法直接作用于View,所以我的问题是我没有在自定义视图类(FriendView(上找到ViewById。我用解决了这个问题
this.findViewById(R.id.friendName);
来自FriendView类。
为了回答我的后续问题,我在创建customView时调试了代码,并将ID设置为-1。