Snažím se vytvořit SearchView
v toolbar
a vypadat jako SearchView
v Google Play Store app
. Zdá se, že zabalí vyhledávací dotaz v rozhovoru s kartami, ale zdá se také, že integruje chování tlačítka/šuplíku.
Toto je hlavní aktivita searchView, má integrovaný přepínač zásuvky
když na něj kliknete, zásuvka přepíná změny na šipku (při klepnutí odstraní fokus z pohledu vyhledávání)
Když kliknete na aplikaci v obchodě, přejdete na stránku s podrobnostmi o aplikaci a vy budete mít podobu ikony s aktualizovaným zobrazením jako sbalené položky akce pomocí tlačítka nahoru:
Nakonec, pokud kliknete na ikonu vyhledávání, rozšíří se jako položka akce (s typem zvlnění animace) a zobrazí se celou obrazovku a obsahuje tlačítko nahoru:
Když se to snažím udělat sám, mám spoustu problémů. Snažil jsem se zabalit vyhledávací dotaz do karty a umístit ho na panel nástrojů. Funguje to, ale na levé straně je vždy vycpávka, kterou nemohu odstranit (zkusil jsem contentInsetStart, nefunguje):
<Android.support.v7.widget.Toolbar
Android:id="@+id/activityCatalogToolbar"
Android:layout_width="match_parent"
Android:layout_height="?attr/actionBarSize"
Android:background="?attr/colorPrimary"
app:popupTheme="@style/AppTheme.PopupOverlay"
Android:theme="@style/AppTheme.AppBarOverlay"
app:contentInsetStart="0dp"
app:contentInsetLeft="0dp">
<Android.support.v7.widget.CardView
Android:id="@+id/activityCatalogSearchContainer"
Android:layout_height="match_parent"
Android:layout_width="wrap_content"
Android:layout_gravity="end"
Android:layout_marginTop="4dp"
Android:layout_marginBottom="4dp"
Android:layout_marginRight="8dp"
Android:layout_marginLeft="8dp"
app:cardCornerRadius="4dp"
app:cardElevation="8dp">
<Android.support.v7.widget.SearchView
Android:id="@+id/activityCatalogSearch"
Android:layout_width="match_parent"
Android:layout_height="wrap_content"
Android:queryHint=""
Android:iconifiedByDefault="false"/>
</Android.support.v7.widget.CardView>
</Android.support.v7.widget.Toolbar>
Také jsem se pokusil odstranit panel nástrojů a nahradit jej jen FrameLayout. To mi umožňuje ovládat polstrování, ale zřejmě jsem ztratil funkce panelu nástrojů (tlačítko nahoru, atd.) A také představuje problémy s tématem (ikony a text zmizí).
Má někdo nápad, jak to dělají? Nechci přidat další knihovnu, aby se vytvořily widgety, které již existují v rámci. Dík!
Do tohoto projektu se můžete pokusit ponořit se do hloubky:
https://Android.googlesource.com/platform/packages/apps/Dialer/
Pro Lollipop nebo Marshmallow, nebo N má SearchEditTextLayout
což je to, co potřebujete:
Výhoda
Musíte použít tuto vlastní implementaci SearchView
.
https://github.com/Quinny898/PersistentSearch
Studio Android:
Pokud ještě nemáte, přidejte úložiště Sonatype:
maven {
url "https://oss.sonatype.org/content/repositories/snapshots"
}
Importovat jako závislost:
compile 'com.quinny898.library.persistentsearch:library:1.1.0-SNAPSHOT'
V rozvržení:
<com.quinny898.library.persistentsearch.SearchBox
Android:layout_width="wrap_content"
Android:layout_height="wrap_content"
Android:id="@+id/searchbox"
/>
Výstup :
Já sám jsem se to snažil vybudovat. Ukončilo se právě tím, že se vyhledávací tlačítko zobrazí v ImageButtonu. Kliknutím na toto tlačítko spustíte fragment, který má být přidán nahoře a který by obsahoval upravený text uvnitř rozvržení tak, aby vypadal takto. Tento fragment se skládal z přehledu pod tímto vyhledávacím polem a zobrazoval návrhy.
Tip: Udržujte rootlayout Fragmentu bez jakýchkoliv pozadí a nastavte hodnotu clickable na true, abyste dosáhli nejlepších výsledků s průhledným panelem