2016-03-28 2 views
1

У меня есть приложение, использующее тему AppCompat и пользовательскую панель инструментов, которая имеет имя приложения и searchView. Когда searchView открывается на экране размера телефона, недостаточно места как для textView с именем приложения, так и с открытым поисковым окном, поэтому он вертикально расширяет панель инструментов и выглядит плохо.Скрыть имя приложения в ToolBar, если SearchView перекрывает его

Чтобы это исправить, я удалить TextView с именем приложения при открытии SearchView:

searchView.setOnSearchClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     title.setVisibility(View.GONE); 
    } 
}); 

И Бриг его обратно, когда SearchView закрывается:

searchView.setOnCloseListener(new SearchView.OnCloseListener() { 
    @Override 
    public boolean onClose() { 
    title.setVisibility(View.VISIBLE); 
     return false; 
    } 
}); 

Однако на большом экране устройство, как и планшет, это не обязательно, и имя просто исчезает, выглядит странно.

Есть ли способ проверить, есть ли место для поиска SearchView и удалить имя приложения только при необходимости? Я знаю, что я, вероятно, могу сделать это по размеру экрана, dpi или что-то в этом роде, но мне интересно, есть ли лучший способ обнаружить этот сценарий.

ответ

0

Одно решение и простой использует configuration qualifiers. вы можете сохранить значение boolean в своем values папке с именем, например, hasEnoughWidth и установить его на false. затем еще одно логическое значение для размера экрана, которое, по вашему мнению, имеет достаточную ширину, просто угадайте, например, минимальная ширина 400dp может быть хорошей. Поэтому сохраните переменную boolean с тем же именем в папке values-w400dp и установите ее в true. затем просто прочитайте значение boolean и решите его. это общий метод, который используется для обнаружения планшета или телефона.

Смежные вопросы