- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们没有编译问题,我们只是想扩展我们的知识。通读Google Code Documentation ,我们已经了解到 +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() 中),第一个 TextView 会被修改。
如果我们确实有最后两行,则第二个 TextView 会被修改。
我们不知道这是可能的,我们认为如果您有两个具有相同 +id 的布局范围的项目,它就不会编译。 现在,我们了解到标识符在该 View 的层次结构中不必是唯一的,但是,我们不了解此行为的用处。
有人知道非唯一标识符有用的用例吗?
当我们在设置项目 CAF 中看到 Android for MSM ( this code ) 时,我们产生了这种疑问。具有重复的 ID (@+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。
关于android - 重复 +id 布局范围的可能用例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42411661/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!