2012-01-11 11 views
12

Próbuję utworzyć komponent podobny do przycisku, z wyrównanym do lewej strony ImageView, a następnie 2 widokami tekstowymi po prawej stronie ImageView, ułożonymi jeden nad drugim i sformatowanymi inaczej, np. następujący przykład :.Układ Androida jako przycisku z wybieralną funkcjonalnością

__________________________ 
|       | 
| |-----| Bold Main Text | 
| |Image|     | 
| |-----| Small Sub Text | 
|__________________________| 

ja też chcesz ImageView zmianie w zależności od stanu click zewnętrznego pojemnika, podobnie jak standardowy przycisk zrobi z wybieralny zasobu związanego z nim. Tak więc, gdy klikam w dowolnym miejscu w zewnętrznym polu, stan wyboru obrazu zmienia się.

Wiem, że mogę użyć przycisku, ustawiając właściwość "drawableLeft", aby utworzyć pojedynczą linię tekstu powiązaną z obrazem jako przyciskiem, ale wydaje mi się, że mogę używać tylko jednego elementu tekstu przy użyciu tej strategii.

Czy ktoś zaimplementował w przeszłości jakiekolwiek elementy interfejsu użytkownika?

Dzięki!

+1

Cóż można użyć własnego układu i dodać OnClickListener do niego, więc będzie begave jak przycisk. Dla zmiany obrazu w stanie kliknięcia, to prawdopodobnie wymagałoby bardziej złożonej logiki w słuchaczu, a może użycie onTouchListener zamiast: – Guillaume

Odpowiedz

14

Możesz dodać android:duplicateParentState="true" do widżetu ImageView. Musisz także ustawić i aktywować nadrzędną rodzinę ImageView.

RelativeLayout w poniższym kodzie będzie działać jako Button:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout:height="match_parent" 
    android:orientation="vertical"> 

    <RelativeLayout 
     android:id="@+id/button" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:clickable="true" 
     android:focusable="true"> 

     <ImageView 
      android:id="@+id/image" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_alignParentLeft="true" 
      android:layout_alignParentTop="true" 
      android:duplicateParentState="true" 
      android:src="@drawable/icon" /> 
     <TextView 
      android:id="@+id/text1" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@+id/image" 
      android:layout_alignTop="@+id/image" 
      android:layout_alignWithParentIfMissing="true" 
      android:duplicateParentState="true" /> 
     <TextView 
      android:id="@+id/text2" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content"    
      android:layout_toRightOf="@+id/image" 
      android:layout_below="@+id/text1" 
      android:layout_alignWithParentIfMissing="true" 
      android:duplicateParentState="true" /> 
    </RelativeLayout> 
</LinearLayout> 
+1

Dzięki Pixie, które działało idealnie. –

+0

Nie ma za co! Cieszę się, że to pomogło. – Michael

+1

Niesamowite rozwiązanie! Próbowałem to zrobić już od wielu godzin. To poprawiło mój humor. Dzięki! – VM4

Powiązane problemy