1
我正在使用Xamarin Studio,我建的應用程序應該輪流切換左側和右側列(如警燈)。要做到這一點,我已經使用了計時器和斷點,我可以看到代碼運行ColorFlip
和值正在設置,但我看不到在模擬器用戶界面的任何更改。Xamarin帶有Timer的Android UI沒有對變化做出反應
main.xml中
<?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">
<TableLayout
android:id="@+id/LightSignal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_centerInParent="true"
android:layout_marginTop="23dp"
android:stretchColumns="*" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weightSum="1" >
<TextView
android:id="@+id/Left"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:paddingLeft="8dp"
android:textColor="#FFF000"
android:background = "#000000"
android:layout_column="0"
/>
<TextView
android:id="@+id/Right"
android:paddingLeft="4dp"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:textColor="#FFF000"
android:background = "#000000"
android:layout_column="1"
/>
</TableRow>
</TableLayout>
</LinearLayout>
MainActivity.cs
using System;
using Android.App;
using Android.Content;
using Android.Content.PM;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;
using System.Collections.Generic;
using Android.Graphics;
namespace Core.Droid
{
[Activity (Label = "Core.Droid", Icon = "@drawable/icon", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]
public class MainActivity : global::Xamarin.Forms.Platform.Android.FormsApplicationActivity
{
bool IsRed;
protected override void OnCreate (Bundle bundle)
{
base.OnCreate (bundle);
global::Xamarin.Forms.Forms.Init (this, bundle);
var app = new App();
LoadApplication(app);
this.SetContentView(Resource.Layout.Main);
System.Timers.Timer timer = new System.Timers.Timer();
timer.Interval = 1000;
timer.Elapsed += ColorFlip;
timer.Enabled = true;
}
private void ColorFlip(object sender, System.Timers.ElapsedEventArgs e)
{
var left = FindViewById<TextView> (Resource.Id.Left);
var right = FindViewById<TextView> (Resource.Id.Right);
if (IsRed) {
left.SetBackgroundColor (Color.Black);
right.SetBackgroundColor (Color.Blue);
IsRed = false;
}else {
left.SetBackgroundColor (Color.Red);
right.SetBackgroundColor (Color.Black);
IsRed = true;
}
}
}
}
我假設我需要強制UI更新後,我改變顏色,我該如何解決這個問題?
它是美麗的,謝謝。 –