2017-01-18 1 views
0

я хочу сделатьВвод фона другой кнопки на кнопку фоне Xamarin

если я нажмите кнопку Button1, Main ButtonBackground изображения = Button1.Background изображение.

если я нажму кнопку Button2, основная кнопка фонового изображения = кнопка2.Запрос.

Я хочу, чтобы для моего приложения было около 80 изображений и характер. Если я узнаю метод, моя работа должна быть более легкой.

enter image description here

My.cs

protected override void OnCreate(Bundle bundle) 
{ 
    base.OnCreate(bundle); 
    SetContentView(Resource.Layout.layout1); 

    Button btn1 = (Button)FindViewById(Resource.Id.btn1); 
    Button btn2 = (Button)FindViewById(Resource.Id.btn2); 
    Button btnMain = (Button)FindViewById(Resource.Id.btnMain); 

    btn1.Click += delegate { 
     btnMain.SetBackgroundResource(/*I cant fill in method*/);     
    }; 
    btn2.Click += delegate { 
     btnMain.SetBackgroundResource(/*I cant fill in method*/); 
    }; 
} 

layout1.axml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="center"> 
    <Button 
     android:text="Button 1" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/btn1" 
     android:background="@drawable/btn_yellow" /> 
    <Button 
     android:text="Button 2" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/btn2" 
     android:background="@drawable/btn_green" /> 
    <Button 
     android:text="Main Button" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/btnMain" /> 
</LinearLayout> 

ответ

1

Вам не нужно несколько лямбды, и вместо того, чтобы использовать SetBackgroundResource вы можете использовать setBackgroundDrawable/getBackgroundDrawable, которые в Xamarin подкрепляется имуществом. Справочная информация:

Button btnMain; 

protected override void OnCreate(Bundle bundle) 
{ 
    base.OnCreate(bundle); 
    SetContentView(Resource.Layout.layout1); 

    Button btn1 = (Button)FindViewById(Resource.Id.btn1); 
    Button btn2 = (Button)FindViewById(Resource.Id.btn2); 
    btnMain = (Button)FindViewById(Resource.Id.btnMain); 

    btn1.Click += ChangeBackground; 
    btn2.Click += ChangeBackground; 
} 

private void ChangeBackground(object sender, EventArgs e) 
{ 
    var btn = sender as Button; 
    btnMain.Background = btn.Background; 
} 
+0

Идеальный ответ. Я полностью хотел этот метод. Спасибо. –

+0

@MahmutBedir, если вы принимаете этот ответ, почему вы не [отмечаете этот ответ] (http://stackoverflow.com/help/someone-answers)? –