Android переворачивает пользовательские TextViews наResume

Задний план

У меня есть приложение с несколькими настраиваемыми TextView. Эти четыре настраиваемых TextView настроены следующим образом:

public class TextView_Light extends android.support.v7.widget.AppCompatTextView {

public TextView_Light(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    init();
}

public TextView_Light(Context context, AttributeSet attrs) {
    super(context, attrs);
    init();
}

public TextView_Light(Context context) {
    super(context);
    init();
}

public void init() {
    Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Light.ttf");
    setTypeface(tf ,1);
}}

У меня есть TextView_Bold, TextView_Light, TextView_Regular и TextView_Thin. Каждый из них использует другой шрифт, сохраненный в assets/fonts.

Я использую такие TextView:

<de.mayr.wap.app.helper.TextView_Light
            android:id = "@+id/textView_Light7"
            android:layout_width = "wrap_content"
            android:layout_height = "wrap_content"
            android:layout_marginStart = "8dp"
            android:layout_marginTop = "8dp"
            android:text = "@string/overviewViaBarcode"
            android:textSize = "16sp"
            app:layout_constraintStart_toStartOf = "parent"
            app:layout_constraintTop_toTopOf = "parent"/>

Когда приложение запускается и представление появляется впервые, все выглядит отлично, вот так: Android переворачивает пользовательские TextViews наResume


Проблема

В этом представлении пользователь щелкает по одной из строк таблицы, появляется Dialog, где пользователь вводит некоторые данные. При сохранении вызывается метод представления onResume, который вызывает веб-сервис и т. д., Например:

@Override
public void onResume() {
    super.onResume();
    callSerNrWS();
}


public void callSerNrWS() {
    if (CheckNetwork.isNetworkAvailable(getContext())) {
        final AsyncResponseFortschritt<ResponseObject<PruefauftraegeVO>> response = new AsyncResponseFortschritt<ResponseObject<PruefauftraegeVO>>() {
            @Override
            public void processFinishSerNr(ResponseObject<PruefauftraegeVO> output) {
                anw = createPruefAnwArraylist();
                seriennummerVO = findDataToSerNr();
                adapt = new PruefAnwAdapter(getContext(), anw, seriennummerVO);
                pruefListView.setAdapter(adapt);
                setVisibilityLoadAnimation(View.GONE);
                if (output.getException() != null && !output.getException().isEmpty())
                    AlertCreator.makeFailAlert(R.string.titelKeinFortschritt, R.string.textKeinFortschritt,getContext());
            }
            @Override
            public void processStartSerNr() {
                setVisibilityLoadAnimation(View.VISIBLE);
            }
        };
        AsyncCallSerNrWS ws = new AsyncCallSerNrWS(response, pruefauftraegeVO);
        ws.execute();
    }
}

И после этого в 90% случаев один или несколько TextView изменили свой Ищу, например, с. TextView_Light в TextView_Thin. Как на следующем рисунке: Появление «Anzugstrom [A]» в третьем ряду теперь выглядит как TextView_Thin, а «9/48» в пятом ряду выглядит как TextView_Light. Android переворачивает пользовательские TextViews наResume


Что я знаю

  • Этого не происходит, когда представление отображается впервые.
  • За этим нет никакой системы. Это совершенно случайно.
  • Это происходит в действиях и фрагментах
  • Это происходит в каждом представлении, в котором у меня есть все, что TextView содержит «жестко закодированный» текст или текст, который поступает из веб-службы.
  • Это не только в списках, но и в "обычных" представлениях.

Вы абсолютно уверены, что это происходит, когда вы не используете ListView или RecyclerView? Это звучит как классический случай повторного использования изображений, когда вы не ожидаете чего-то. Несвязанный: пробовали ли вы использовать встроенные светлые / тонкие / полужирные шрифты вместо создания собственного настраиваемого класса TextView?

Ben P. 05.12.2018 18:13

В другом представлении есть ConstraintLayout, содержащий TableRow, содержащий ConstraintLayout, содержащий несколько TextView. И они тоже кувыркаются ... Да. Я мог бы использовать сборку в TextViews ... Мне пришлось изменить 100–150 TextView в моем приложении. Это будет нормально, если это необходимо. Но: Мне бы очень хотелось понять, почему это происходит ... Где-то должна быть причина ...

MrOnkelChiller 06.12.2018 11:25
0
2
42
0

Другие вопросы по теме