2016-03-28 7 views
1

Ich habe eine App, die das AppCompat-Design und eine benutzerdefinierte Toolbar verwendet, die den App-Namen und eine searchView enthält. Wenn das searchView auf einem Bildschirm in Telefongröße geöffnet wird, ist nicht genug Platz für textView mit dem App-Namen und der geöffneten searchView, sodass die Symbolleiste vertikal erweitert wird und schlecht aussieht.App-Name in ToolBar ausblenden, wenn SearchView ihn überlappt

Um dies zu beheben, ich die Textview mit dem App-Namen entfernen, wenn die Suche öffnet:

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

Und es brig zurück, wenn die Suche schließt:

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

jedoch auf einem größeren Bildschirm Gerät, wie ein Tablet, ist dies nicht notwendig und der Name verschwindet gerade seltsam.

Gibt es eine Möglichkeit, zu überprüfen, ob Platz für die searchView ist, und den Namen der App nur bei Bedarf zu entfernen? Ich weiß, dass ich das wahrscheinlich nach Bildschirmgröße, dpi oder ähnlichem tun kann, aber ich frage mich, ob es eine bessere Möglichkeit gibt, dieses Szenario zu erkennen.

Antwort

0

Eine Lösung und einfache verwendet configuration qualifiers. Sie können einen boolean Wert in Ihrem values Ordnernamen speichern, zum Beispiel hasEnoughWidth und ihn auf false setzen. dann einen anderen booleschen Wert auf Bildschirmgröße, die Sie denken, dass es genug Breite hat, raten Sie es zum Beispiel minimale Breite von 400dp kann gut sein. Speichern Sie also eine boolean Variable mit demselben Namen in einem Ordner values-w400dp und setzen Sie sie auf true. dann lese einfach diesen boolean Wert und entscheide darüber. Dies ist eine gängige Technik, die oft zum Erkennen von Tablet oder Telefon verwendet wird.

Verwandte Themen