对于重复 ID布局的范围内,可能的用例是什么?



我们没有汇编问题,我们只想扩展我们的知识。通过Google Code文档阅读,我们已经阅读了 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="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:orientation="vertical"
    tools:context="com.bq.testviewids.MainActivity">
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hola Mundo" />
</LinearLayout>
private void initViews() {
    txtText = (TextView) findViewById(R.id.text);
    txtText.setId(View.generateViewId());
    txtText = (TextView) findViewById(R.id.text);
}
private void changeTextView() {
    txtText.setText("");
}

如果在 initviews()中我们没有最后两行:

txtText.setId(View.generateViewId());
txtText = (TextView) findViewById(R.id.text);

当我们更改txtText(在 changeTextView())中时,第一个文本视图将被修改。

如果我们确实有最后两行,则第二个文本视图将被修改。

我们不知道这是可能的,我们认为,如果您有两个具有相同 ID的整个布局,则不会编译。现在,我们知道标识符在此视图的层次结构中不必是唯一的,但是,我们不了解此行为的有用性。

有人知道非唯一标识符有用的用例吗?

当我们在设置项目中,当我们在中看到MSM 的Android( caf )时,这种疑问就会出现在我们身上。em>@ id/fields ):

       <LinearLayout android:id="@+id/fields"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/wifi_section"
            android:visibility="gone">
        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                style="@style/wifi_item">
            ...
        </LinearLayout>
        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                style="@style/wifi_item">
            ...
    </LinearLayout>
    <LinearLayout android:id="@+id/fields"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            style="@style/wifi_section" >
        ...
    </LinearLayout>

如果您在另一个布局中包含两次或更多次的布局,则想到的用例是重复的ID。它可以为您节省尝试在每个重复的布局中获得唯一ID的头痛。

它还允许您使用相同的代码在每个包含的布局中工作,而无需跟踪不同的ID的副标题,具体取决于您正在使用的子路线。

相关内容

最新更新