查找与字符串android匹配的视图ID

时间:2016-12-09 17:20:34

标签: android xamarin

如何获取与Android / Xamarin中的字符串匹配的ID名称。 例如,如果我有string="name";我想在Resource.Designer中找到与该名称匹配的id,例如:

 <ImageView
       android:layout_width="match_parent"
       android:layout_height="match_parent"
       android:id="@+id/name"/>

我尝试使用getResources().getIdentifier,但它总是返回null。

2 个答案:

答案 0 :(得分:1)

如果您想获取字符串资源的ID,则需要使用Resources.GetIdentifier()

<强> EX:

var applicationNameId = Resources.GetIdentifier("ApplicationName", "string", this.PackageName);

这将获得ApplicationName文件中strings.xml项的资源ID。

<string name="ApplicationName">AppName</string>

换句话说,我应该能够获取此标识符,并在我的Resource.Designer.cs中搜索相同的int

如果您想获取视图+id/名称的标识符,可以改为执行以下操作:

<强> EX:

var buttonNameId = Resources.GetIdentifier("MyButton", "id", this.PackageName);

哪个会获得ID为Button的{​​{1}}的资源ID:

MyButton

然而,根据文档,这是不鼓励的,因为它比通过ID而不是名称获取资源要慢得多。

  

注意:不鼓励使用此功能。按标识符检索资源比按名称检索资源要高效得多。

https://developer.android.com/reference/android/content/res/Resources.html#getIdentifier(java.lang.String, java.lang.String, java.lang.String)

答案 1 :(得分:-1)

试试这个

var resourceId = (int)typeof(Resource.Id).GetField("name").GetValue(null);