设置新文本后,Android TextView不会刷新

时间:2016-07-15 13:18:19

标签: android android-layout xamarin textview xamarin.android

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();
            };
        }
    }

0 个答案:

没有答案