2017-09-07 18 views
0

メインアクティビティのレイアウトにコントロール(TextView)を追加しました。Xamarin.androidコントロール名の取得方法

TextView myControl = FindViewById<TextView>(Resource.Id.TextViewCurrentLenguajeLabel); 

がどのように私は(TextViewCurrentLenguajeLabel)コントロールの名前を取得することができます:私は、私はこのような制御を取得するコードに続いて、元の

<?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> 

を取得したいですか?

は、私はそれが名前であることを知っている翻訳機能

に送信することが必要ですが、私はメソッドに名前を送信する必要があります。私はこれを行うには、この

myControl.Text = localizationMethod(myControl.GetControlName()); 
+0

ようにそれを使用することができます - あなたは、おそらくあなたはのTextViewのテキストを得るのですかどのように意味していますか? – Ewald

+0

私は名前であることを知っているが、私はこの 'myControl.tText = localizationMethod(「TextViewCurrentLenguajeLabel」)のような何かをしないようにしたいメソッドに名前を送信する必要があります;' 私のような何かをしたいですこの 'myControl.tText = localizationMethod(myControl.GetControlName()); ' – foluis

+0

私はあなたが何を意味するか、または少なくとも私が見ると思うと思う。私はそれに答えようとします。 – Ewald

答えて

1

方法Android.Content.Res.Resources.GetResourceNameこれを行うのに役立ちます。あなたはのTextViewの名前であることを

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(); 
+0

素晴らしい!それは私がそれを必要とする方法だけで動作します – foluis

0

のような何かをしたい、この

myControl.Text = localizationMethod(“TextViewCurrentLenguajeLabel”); 

ような何かをしないようにしたい、次のことを試してください。

void localizationMethod(TextView tv) 
{ 
    tv.Text = "Some New Text"; 
} 

そして、それを使用するために、通常の方法でTextViewを取得する

TextView myControl = FindViewById<TextView>(Resource.Id.TextViewCurrentLenguajeLabel); 

を呼び出して呼び出します。localizationMethod(myControl);

これにより、ローカリゼーションメソッドがコントロールにアクセスできるようになり、必要に応じてメソッドで操作できます。

関連する問題