Klickbar LinearLayout med text i, är bara klickbar UTANFÖR texten! :(

Diskussion i 'Frågor, support och diskussion' startad av johle, 2 jul 2010.

  1. johle

    johle Kid Droid Medlem

    Blev medlem:
    8 jun 2010
    Inlägg:
    35
    Mottagna gillanden:
    0

    MINA ENHETER

    Hejsan alla glada denna fredagsmorgon! :)

    Jag har ett problem som kommer ur att jag vill göra egna knappar med text inuti.

    Av någon anledning blir knappen som omger dem endast klickbar där knappen inte täcks av nån text :/

    Här är koden:

    HTML:
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    			android:id="@+id/HomeButton1" android:orientation="vertical"
    			android:background="@drawable/btn_custom" android:clickable="true"
    			android:padding="7dip" android:layout_weight="1"
    			android:layout_margin="3dip"
    			android:layout_width="fill_parent" android:layout_height="fill_parent"
    			>
    
    			<TextView android:id="@+id/HomeButton1Text1"
    				android:layout_width="fill_parent" android:layout_height="wrap_content"
    				android:layout_weight="1" android:textColor="#FFFFFF"
    				android:shadowColor="#000000" android:shadowRadius="1"
    				android:textStyle="bold" android:shadowDy="2" android:gravity="left"
    				android:textSize="16dip" android:inputType="text" 
    				android:fadingEdge="horizontal" android:maxLines="1"
    				android:ellipsize="marquee">
    			</TextView>
    			<TextView android:id="@+id/HomeButton1Text2"
    				android:layout_width="fill_parent" android:layout_height="wrap_content"
    				android:layout_weight="1" android:textColor="#FFFFFF"
    				android:shadowColor="#000000" android:shadowRadius="1"
    				android:shadowDy="2" android:gravity="left" android:textSize="14dip"
    				android:inputType="text" android:fadingEdge="horizontal"
    				android:maxLines="1" android:ellipsize="marquee">
    			</TextView>
    		</LinearLayout>
    Bild på knappen:
    http://files.lennefalk.com/besok.png

    Det är i stort sett bara under den nedersta texten jag kan klicka, och längst ut till höger på knappen. Det känns nästan som att endast marginalen är klickbar? :/ Jättekonstigt tycker jag?

    Någon har en suck om vad detta kan bero på :/


    Knappen har ett eget tema som ni ser, men även om jag tar bort detta och bara gör bakgrunden t.ex. röd så kvarstår problemet; så det har inget det det att göra tyvärr.

    Alla tips uppskattas! :)

    Tack på förhand!

    MVH och ha en bra sommarfredag!

    Johan
     
    Last edited: 2 jul 2010
  2. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Utan att kolla på det vidare mycket så låter det som att din knapp (dvs din layout) ligger under texterna, och det är ju helt rätt, men det betyder att det är texterna som får "on click" och inte din layout. Gör även texterna klickbara, alternativt kolla om det går att göra så att de skickar "klickeventet" vidare nedåt i stacken utan att konsumera det själva. Ett tredje alternativ är att lägga en genomskinlig komponent över hela knappen och låta den reagera på klick.

    Det alternativet som låter mest rätt är att koll upp så att texterna inte konsumerar klicket. Resten känns lite som fulhack.

    Edit: Testa t.ex att sätta android:clickable="false" på texterna.
     
    Last edited: 2 jul 2010
  3. johle

    johle Kid Droid Medlem

    Blev medlem:
    8 jun 2010
    Inlägg:
    35
    Mottagna gillanden:
    0

    MINA ENHETER

    Mjo, jag följer din tankegång och det var ungefär så jag funderade också. Dock verkar det inte fungera att bara köra på clickable=false tyvärr. Jag hittade även attributet:

    android:descendantFocusability="blocksDescendants"

    men det har bara med focusability att göra, inte klick. Och att skicka vidare eventet skulle visserligen fungera, men då måste en sådan listener göras för alla texter och click/touch på dessa, dvs 6 knappar x 2 texter x 2 olika event, 24 listeners bara att skicka vidare eventet. Känns ju väldigt fel :/ ? Eller är jag helt ute och cyklar?
     
  4. Varazir

    Varazir Senior Droid Medlem

    Blev medlem:
    15 sept 2009
    Inlägg:
    1 462
    Mottagna gillanden:
    54
    Operatör:
    Telia
    Telefon:
    Pixel 5

    MINA ENHETER

    Operatör:
    Telia
    Telefon:
    Pixel 5
    Info:
    Nova launcher
    Om du kan göra ett osynligt lager som plockar upp klickningen så är det nog det lättaste. lite fult kanske
     
  5. johle

    johle Kid Droid Medlem

    Blev medlem:
    8 jun 2010
    Inlägg:
    35
    Mottagna gillanden:
    0

    MINA ENHETER

    Fast problemet kvarstår väl egentligen, hur skulle jag placera det ÖVER de andra? Om jag lägger det utanför den yttre LinearLayout kommer ju detta inte hamna överst och således inte vara klickbart. Och lägger jag det inuti layouten kommer den antingen att hamna ovanför eller under texterna. Inte täcka dem, eller? :o
     
  6. Kaj

    Kaj Senior Droid Medlem

    Blev medlem:
    12 jun 2009
    Inlägg:
    1 768
    Mottagna gillanden:
    44

    MINA ENHETER

    Du skulle lägga en LinearLayout och det genomskinliga lagret i en RelativeLayout.
     
  7. Snago

    Snago Baby Droid Medlem

    Blev medlem:
    18 apr 2010
    Inlägg:
    26
    Mottagna gillanden:
    0

    MINA ENHETER

    Rekommenderar inte att börja fulhacka med relative layout. Dömt att misslyckas när nån använder appen på en mobil med nån annan upplösning/aspect ratio.

    Provat med android:clickable="true" på texterna också?
    Vad jag förstått så kommer något som är clickable att skicka vidare ett obehandlat klick till det som finns bakom.
     
  8. johannilsson

    johannilsson Adult Droid Medlem

    Blev medlem:
    23 jun 2009
    Inlägg:
    577
    Mottagna gillanden:
    8

    MINA ENHETER

    Sätt samma OnClickListener på texten som på din layout?
     
  9. Varazir

    Varazir Senior Droid Medlem

    Blev medlem:
    15 sept 2009
    Inlägg:
    1 462
    Mottagna gillanden:
    54
    Operatör:
    Telia
    Telefon:
    Pixel 5

    MINA ENHETER

    Operatör:
    Telia
    Telefon:
    Pixel 5
    Info:
    Nova launcher
    En fråga, jag har inte programmerat java, tittat på lite filmerna från stanford. De nämnde nått om att man kan skapa ett objekt av flera objekt. Jag vet inte hur dynamiskt det kan bli men om det går göra på i androids version av java skulle man inte kunna skapa ett objekt med både text och själva knappen sedan skapa en event på det objektet ?

    Det enda objektorienterat jag har sysslat med är flash( man kan kalla det objektorienterat) och det var ganska lite med

    //Daniel
     
  10. crazyrobban

    crazyrobban Adult Droid Medlem

    Blev medlem:
    10 dec 2009
    Inlägg:
    582
    Mottagna gillanden:
    32
    Operatör:
    DGC
    Telefon:
    Galaxy Note Edge

    MINA ENHETER

    Operatör:
    DGC
    Telefon:
    Galaxy Note Edge
    Platta:
    Samsung Galaxy Tab Pro 8.4
    ROM:
    CM 13
    Nu är jag helt grön på det här, men jag måste ändå fråga;
    Varför använder du helt enkelt inte "button" funktionen?

    Hade inte det löst hela problemet? :scared: