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);
}
}
заработало даже при вызове у одного элемента.