У меня есть приложение с несколькими настраиваемыми 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"/>
Когда приложение запускается и представление появляется впервые, все выглядит отлично, вот так:

В этом представлении пользователь щелкает по одной из строк таблицы, появляется 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.

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