it-swarm-eu.dev

Jak styl Search Search v Androidu nastavit jako v aplikaci Obchod Google Play?

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

 MainActivity SearchView

když na něj kliknete, zásuvka přepíná změny na šipku (při klepnutí odstraní fokus z pohledu vyhledávání)

 enter image description here

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:

 enter image description here

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:

 enter image description here

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>

 enter image description here

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!

7
d370urn3ur

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

  • kód provedený společností Google, nikoli třetí stranou.
8
R. Zagórski

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 :

 enter image description here

2
Ironman

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

0
Kushan