Hirdetés

Keresés

Új hozzászólás Aktív témák

  • thon73

    tag

    válasz Benex #4402 üzenetére

    Köszönöm!
    A gond csak az, hogy még mindig nem értem a használatát. Ezt vajon a View állítja be, ha nagyobb akar lenni, mint a Parent által adott érték? És akkor a Parent mit tesz? Tudomásul veszi, vagy küld nagyobb értéket? (Gondolom, ez nincs felprogramozva, csak a logikát kérdem.)

    A konkrét probléma lényege:
    A parent egy frame-layout, amit a rendszer ad a KeyboardLayout számára, nem tudom megváltoztatni.
    A Custom View magassága (alapvetően a rendelkezésre álló szélességtől függ), de ami fontos: nem haladhatja meg a rendelkezésre álló magasság egy bizonyos százalékát. Ez idáig egyszerűnek tűnik.
    DE!
    A mérési ciklus során egy csomó onMeasure() hívást kapok, melyek némelyike a teljes magasságot, némelyike a Navigation Bar-ral csökkentett magasságot, némelyike a már számított magasságot, némelyike pedig az általam számítottnál is kisebb magasságot kap meg - persze mindig AT_MOST megjelöléssel.
    Hozzáteszem: a Custom View onMeasure metódusa MINDIG egy fix magasságértéket ad vissza - ami viszont természetesen nagyobb, mint fent a negyedik érték.

    Itt vált gyanússá, hogy használnom kellene ezt a bizonyos bitet. De akár beállítom, akár nem, ugyanaz történik. Pedig ettől reméltem a megoldást.

    A hibajelenség (lehet, hogy ettől független): A Custom View tényleges magasságmérete némileg random értéket vesz fel. Néha pontos, fekvő módban néha "odaképzeli" maga alá a Navigation Bar-t (ami egyébként oldalt van), álló módban meg néha becsúszik a Navigation Bar mögé. Tíz esetből kb 1-2 alkalommal hibás, holott a logika mindig ugyanaz. És csak elforgatás után jelentkezik a hiba, ha requestLayout()-ot kérek, akkor pontosan számol.

    Sehol nem találtam ilyen hibáról leírást, és elképzelni sem tudom, mit csinálok rosszul. A teljes program túl nagy, kellene írni egy rövid tesztet, de ahhoz se kedvem, se időm. Vagy a rendszerben van a hiba, az is lehet. Bocs, hogy hosszú voltam, de tényleg a fejem verem tőle a falba.

    Közben rájöttem, hogy megkerülésül minden elfordítás (és measure cycle) után kiadok egy requestLayout-ot, ami rendezi a View-t. De valószínű nem ez a korrekt megoldás.

Új hozzászólás Aktív témák