TextView
中有一个RelativeLayout
和一个按钮。按下按钮时,TextView.Text
(对应于我认为的Java中的setText(string)
)被设置为新值。此新值未显示在屏幕上。当我第二次按下按钮时,显示先前设定的值,而不是当前值。我尝试运行在UI线程上设置TextView.Text
的代码,我在设置值后尝试调用Invalidate()
但没有运气。当我将TextView
移到RelativeView
之外时,TextView
设置正确,并立即反映更改。我已经构建了一个测试视图和活动来测试与应用程序其余部分隔离的此行为:
<?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">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="35dp"
android:background="#ccc"
android:layout_margin="35dp"
android:id="@+id/test_layout">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="0"
android:id="@+id/test_text"
android:background="@android:color/transparent"
android:layout_toLeftOf="@+id/test_increase"
android:gravity="center"
android:textColor="#fff" />
<Button
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="Add"
android:textColor="#fff"
android:gravity="center"
android:layout_alignParentRight="true"
android:id="@+id/test_increase" />
</RelativeLayout>
</LinearLayout>
活动在C#(Xamarin)中,但应该直接在Java中创建:
[Activity(Label = "TestActivity", ScreenOrientation = ScreenOrientation.Portrait)]
public class TestActivity : Activity
{
Button _testIncrease;
TextView _testText;
int _currentIndex = 0;
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.test_navigation);
_testText = FindViewById<TextView>(Resource.Id.test_text);
_testIncrease = FindViewById<Button>(Resource.Id.test_increase);
_testIncrease.Click += (sender, args) =>
{
_currentIndex++;
_testText.Text = _currentIndex.ToString();
};
}
}