5

私はこの奇妙な問題に直面し、多くの頭痛とトラブルを引き起こしました。

数冊の本のリポジトリであるアプリケーションを公開しました。要件に適合し、高速で使いやすいため、TextViewを使用して各章のテキストを表示することにしました。

ユーザーから、テキストを選択してコピーできるかどうか尋ねられました。textIsSelectable= trueを使用しましたが、すべて問題ありませんでした。翌日、テキストが変更されていないことを報告するために電話があり、チャプターを開いて、テキスト以外の別のチャプターに切り替えました。同じまま。

私の側からは論理的な問題かもしれないと思いましたが、デバッグ後、textIsSelectable = false;を設定すると、TextViewで問題が発生しました。すべてが大丈夫でした。

テキストが表示されるたびに増加する静的intを使用したことを確認するために、テキストは変更されませんでした。

では、何が問題なのでしょうか。TextViewを間違った方法で使用していますか?または、TextView自体にバグがありますか?

これが私のレイアウトです(txtBodyは問題の原因となるTextViewです)

        <?xml version="1.0" encoding="utf-8"?>

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             android:background="@android:color/white">

    <ScrollView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/scrollView"
            android:fillViewport="true"
            >

        <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"

                android:orientation="vertical"
                android:gravity="right">

            <TextView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:text="Title Text"
                    android:id="@+id/txtTitle"
                    android:textSize="24sp"
                    android:padding="5dp"
                    android:gravity="right"/>

            <TextView
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:text="Detail Text"
                    android:id="@+id/txtBody"
                    android:background="@android:color/white"
                    android:gravity="right"
                    android:textColor="@android:color/black"
                    android:textSize="16sp"
                    android:padding="5dp"
                    android:enabled="true"
                    android:textIsSelectable="true"
                    android:selectAllOnFocus="false"
                    android:soundEffectsEnabled="true"/>

        </LinearLayout>


    </ScrollView>


</FrameLayout>

このコードを使用してテキストを設定します。

String body = MainDataManager.getInstance().getChapterBody(book.getTable(), chapter.getId());
    updateTextStyle();
    txtTitle.setText(chapter.getTitle());
    txtBody.setText(body, TextView.BufferType.SPANNABLE);
4

1 に答える 1

0

textview のテキストを変更する前に、invalidate() メソッドを使用してください。

 String body = MainDataManager.getInstance().getChapterBody(book.getTable(), chapter.getId());
    updateTextStyle();
    txtTitle.invalidate();
    txtTitle.setText(chapter.getTitle());
    txtBody.invalidate();
    txtBody.setText(body, TextView.BufferType.SPANNABLE);
于 2013-02-09T07:48:18.537 に答える