Просмотреть 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. Это ваша проверка.