0

我正在单击按钮创建自定义视图。自定义视图是:

<?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 获取这个嵌入式视图实际上并不是最好的方法?

非常感谢您提前提供的帮助!

4

2 回答 2

0

好的,所以当我尝试这样做时,我没有抽出任何东西,我自己也很困惑。

我的自定义视图 XML 文件为我感兴趣的 TextView 创建了 ID,例如“@id+/friendName”。这意味着填充了 R.id.friendName。但是,我没有意识到让我感到困惑的是这个friendName ID 出现的上下文。

findViewById 方法直接作用于视图,所以我的问题是我不是自定义视图类 (FriendView) 上的 findViewById。我解决了它:

this.findViewById(R.id.friendName);

从 FriendView 类中。

为了回答我的后续问题 - 我在创建 customView 并将 ID 设置为 -1 时调试了代码。

于 2020-04-23T13:36:19.047 回答
0

用户在文本字段中输入一些文本(名称),然后按下按钮创建?> 新的自定义视图(好友列表中的好友)。

我想要做的是访问嵌入在视图中的朋友姓名文本视图。> 它的 ID 为“@id+/friendName”,但我似乎不知道如何访问它。所以我想问题是 - 如果我知道 FriendView 元素的 ID,那么我该如何 > 获取其中的friendName TextView 元素。

您可以friendName通过使用findViewById您创建的自定义视图的新实例(您将添加到视图层次结构中的那个)来找到视图

还有一个问题是,一旦创建了另一个自定义视图(一个新朋友),每个自定义视图中嵌入视图的这些 ID 将是相同的,唯一不同的因素是自定义视图 ID 会不同。这些是在运行时随机生成的吗?

不..它们不是在运行时随机生成的。它们将是您已经分配给视图的内容(例如friendName)。

于 2020-04-22T20:45:55.030 回答