android:id和android:labelFor?之间的区别

我写了一个简单的布局和EditText,但是它显示下面的警告信息,

“没有标签视图指向这个文本字段”

在search时,我得到了这个 ,它也解决了这个警告信息。 但是两者属性android:idandroid:labelFor 。 任何澄清!

Solutions Collecting From Web of "android:id和android:labelFor?之间的区别"

机器人:ID

为此视图提供一个标识符名称,稍后使用View.findViewById()Activity.findViewById()检索它。 这必须是资源参考; 通常你使用@ +语法设置这个来创build一个新的ID资源。 例如:android:id =“@ + id / my_id”,它允许您稍后使用findViewById(R.id.my_id)检索视图。

必须是以"@[+][package:]type:name"格式或以“?[package:] [type:] name”forms的另一个资源的引用。

这对应于全局属性资源符号id。


机器人:labelFor

public static final int labelFor

指定此视图的视图的ID,作为可访问性的标签。 例如,UI中的EditText之前的TextView通常指定EditText中包含的信息。 因此,TextView是EditText的标签。

必须是整数值,例如“100”。

这也可以是对资源(forms为“@ [package:] type:name”)或主题属性(forms为“?[package:] [type:] name”)的引用,包含这种types的值。

常量值:16843718(0x010103c6)

更新:

例如 –

  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_height="wrap_content" android:orientation="vertical" android:layout_width="match_parent"> <TextView android:layout_width="match_parent" android:layout_height="match_parent" android:labelFor="@+id/edit_item_name" android:text="Item Name"/> <EditText android:id="@+id/edit_item_name" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="Item Name"/> </LinearLayout> </LinearLayout> 

参考: android:id和android:labelFor 。

labelFor是可访问性选项的属性。 您将其分配给标签,以便在用户单击EditText字段的情况下,android可以知道要向用户(低视力用户的话语提示)阅读的内容。

id为此视图提供一个标识符名称,稍后使用View.findViewById()Activity.findViewById()检索它。

android:id定义了这个视图的ID。

android:labelFor参考另一个视图的ID。

除了所有的答案,如果你不使用XML文件的应用程序这是一个简要的解释什么服务查看ID:

(顺便说一句,在我看来使用XML吸盘 – 我唯一的XML文件是清单:D生成gradle)

@IdRes – 资源ID的注释

 /** define resource id for view */ @IdRes int TEXT_VIEW_ID = "111111"; /** create edit tex in code */ EditText myTextView = new EditText(Context); /** set view id */ myTextView.setID(TEXT_VIEW_ID); /** set layout params etc then attach or inflate as u wish to view hierarchy */ /** use view id to find view */ EditText etFound = (EditText) View.findViewById(TEXT_VIEW_ID); 

PS。 当使用Activity.onSaveInstanceState(Bundle)时,ID是强制保留层次结构视图的状态 – 所以如果你在代码中创build(VIEW / WIDGET / LAYOUT等),不要忘记设置它。