我已将控件(TextView)添加到主Activity中的布局中。我想得到原来的
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:text="@string/currentLenguajeLabel"
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/TextViewCurrentLenguajeLabel" />
</LinearLayout>
然后在代码中我得到这样的控件:
TextView myControl = FindViewById<TextView>(Resource.Id.TextViewCurrentLenguajeLabel);
如何获取控件的名称( TextViewCurrentLenguajeLabel )?
我需要它将它发送到翻译功能
我知道这就是名字,但我需要将名称发送给方法。我想避免做这样的事情
myControl.Text = localizationMethod(“TextViewCurrentLenguajeLabel”);
我想做这样的事情
myControl.Text = localizationMethod(myControl.GetControlName());
答案 0 :(得分:1)
方法Android.Content.Res.Resources.GetResourceName
可以帮助您完成此操作。您可以定义以下扩展方法
public static class ViewExtensions
{
public static string GetControlName(this View view)
{
string controlName = "";
if (view.Id > 0)
{
string fullResourceName = Application.Context.Resources.GetResourceName(view.Id)
controlName = fullResourceName.Split('/')[1];
}
return controlName;
}
}
并像这样使用
var controlName = myControl.GetControlName();
答案 1 :(得分:0)
要执行此操作,请尝试以下操作:
void localizationMethod(TextView tv)
{
tv.Text = "Some New Text";
}
然后使用它,通过正常的
获取TextViewTextView myControl = FindViewById<TextView>(Resource.Id.TextViewCurrentLenguajeLabel);
然后拨打localizationMethod(myControl);
这将赋予对控件的localizationMethod访问权限,然后您可以根据需要在方法中使用它。