textView.setVisibility не срабатывает View.VISIBLE

Пишу плейер для Android TV. Есть Activity, на которой VideoWiew и TextView с ImageButton. Если запустить выполнение кода с View.VISIBLE и в дальнейшем меть на INVISIBLE, то все работает, но если наоборот, запустить с INVISIBLE и менять на VISIBLE, то ничего не меняется. Хотя с ProgressBar таких проблем нет. Что это может быть?

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/main_browse_fragment"
    android:name="com.example.tv_app.MainFragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    tools:deviceIds="tv"
    tools:ignore="MergeRootFrame" >

<VideoView
    android:id="@+id/videoView"
    android:layout_width="match_parent"
    android:layout_height="0dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.0"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.0" />

<TextView
    android:id="@+id/tVtoken"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="ID"
    android:textSize="8sp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.916"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.969" />

<ImageButton
    android:id="@+id/btnClear"
    android:focusable="true"
    android:layout_width="30dp"
    android:layout_height="31dp"
    android:onClick="onClickClearBtn"
    android:src="@android:drawable/ic_menu_close_clear_cancel"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.982"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.992" />

<ProgressBar
    android:id="@+id/progressBar"
    style="?android:attr/progressBarStyleHorizontal"
    android:layout_width="661dp"
    android:layout_height="17dp"
    android:indeterminate="false"
    android:max="100"
    android:progress="0"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.501"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.969" />

<ProgressBar
    android:id="@+id/progressBar2"
    style="?android:attr/progressBarStyle"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:layout_constraintBottom_toBottomOf="@+id/btnClear"
    app:layout_constraintEnd_toEndOf="parent"
    app:layout_constraintHorizontal_bias="0.982"
    app:layout_constraintStart_toStartOf="@+id/videoView"
    app:layout_constraintTop_toTopOf="parent"
    app:layout_constraintVertical_bias="0.032" />

</androidx.constraintlayout.widget.ConstraintLayout>

-

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    videoView = findViewById(R.id.videoView);
    tVtoken = findViewById(R.id.tVtoken);
    resetBtn = findViewById(R.id.btnClear);
    progressBar = findViewById(R.id.progressBar2);
    progressBarHorizont = findViewById(R.id.progressBar);
    progressBarHorizont.setVisibility(ProgressBar.INVISIBLE);

    loadData();
    checkLogin();
}

-

public static void displayID () {
    if (Api.playerSettings.setings.dispid) {
        Log.d(TAG, "---> Set Settings from SIO --- VISIBLE => is show? " + tVtoken.isShown());
            tVtoken.setVisibility(View.VISIBLE);
            resetBtn.setVisibility(View.VISIBLE);

    } else {
        Log.d(TAG, "---> Set Settings from SIO --- INVISIBLE => is show? " + tVtoken.isShown());

            tVtoken.setVisibility(View.INVISIBLE);
            resetBtn.setVisibility(View.INVISIBLE);

    }
}

Привел часть кода.


Ответы (1 шт):

Автор решения: IlyaRU

В итоге разобрался, может еще кому пригодится:

у элемента, которому меняем VISIBLE необходимо вызвать метод bringToFront() и все заработает!

public static void displayID () {

    if (Api.playerSettings.setings.dispid) {
            tVtoken.setVisibility(View.VISIBLE);
            resetBtn.setVisibility(View.VISIBLE);
            tVtoken.bringToFront();
    } else {
            tVtoken.setVisibility(View.INVISIBLE);
            resetBtn.setVisibility(View.INVISIBLE);
    }
}

заработало даже при вызове у одного элемента.

→ Ссылка