Просмотреть getVisibility() isShown() вернуть неверную видимость
У меня есть представление, которое условно добавляется к родительскому.
Я проверяю, если он уже добавлен к родительскому или нет, к сожалению, он всегда возвращает его видимый.
if (findViewById(R.id.bottom_bar).getVisibility == View.Visible)
if (findViewById(R.id.bottom_bar).isShown())
оба возвращают true
, даже когда представление никогда не было добавлено. as не отображается.
Ответы
Ответ 1
getVisibility()
просто возвращает видимость, которую вы хотите видеть при добавлении в окно. Он не изменяется, если вы не вызываете setVisibility()
. Он также не указывает, действительно ли вид отображается на экране.
isShown()
аналогичен. Вот документ:
Возвращает видимость этого представления и всех его предков
Возвращает
Истинно, если это представление и все его предки VISIBLE
Ответ 2
Мне нужно было сделать что-то подобное, и я склонен задавать представление, имеет ли он родителя (myView.getParent()!= null), тогда я предполагаю, что представление было добавлено в другое представление. Часто, чтобы скрыть представление, я удаляю его из родителя. Вы также можете переопределить метод onDraw, и если вы не получите призывы к розыгрышу, вы, конечно, не видите.
Ответ 3
case R.id.title_call_button:
if(llButtonCallNow.getVisibility() != View.VISIBLE){
llButtonCallNow.setVisibility(View.VISIBLE);
}
else{
llButtonCallNow.setVisibility(View.GONE);
Toast.makeText(getBaseContext(), ("Im here baby :)"),
Toast.LENGTH_SHORT).show();
}
break;
Ответ 4
Если findViewById(R.id.bottom_bar)
возвращено не null, то хотя бы один объект bottom_bar View уже создан где-то в иерархии View. Это ваша проверка.