2011-07-22 18 views
8

Chcę utworzyć przycisk Androida z obrazem i tekstem, ale tekst jest automatycznie wyśrodkowany. Jak umieścić tekst u dołu przycisku?Przycisk z tekstem I obrazem (Android)

Wiem, że mogę użyć układu względnego do umieszczenia drugiego przycisku tekstowego pod obrazem, ale wolę minimalizować kod.

+1

możliwe duplikat [Android: połączenie tekstu i obrazu na przycisk lub ImageButton] (http: // stackoverflow. com/questions/1532876/android-combining-text-image-on-a-button-or-imagebutton) –

Odpowiedz

4

Gdybym był tobą, po prostu nie użyłbym przycisku. Użyj LinearLayout lub RelativeLayout i po prostu nadaj mu tło Button (wskazówka: użyj selektora, jeśli chcesz mieć różne obrazy dla każdego stanu) i umieść w nim swój tekst, następnie możesz użyć atrybutów drawableLeft, drawableTop itp .. aby umieścić zdjęcie na dowolnej stronie. Jeśli chcesz mieć większy poziom kontroli, co do tego, gdzie obraz się znajduje w stosunku do tekstu, użyj jednego TextView i jednego ImageView. Następnie w Javie wystarczy uzyskać odniesienie do układu i traktować go tak samo, jak przycisk z setOnClickListener().

+0

Świetny pomysł! W ten sposób (widok tekstowy i widok obrazu w liniowym layoucie) można kontrolować dokładne pozycje i rozmiary tekstu i ikony. – Leeeeeeelo

+0

Lub zobacz [odpowiedź Adama Storm'a] (http://stackoverflow.com/a/6793454/199364), aby w prosty sposób połączyć tekst i obraz z obrazem na określonej krawędzi przycisku. – ToolmakerSteve

42

Można zadeklarować gdzie na przycisku chcesz przypisać obraz (Im zakładając już masz obraz na przycisk):

<Button 
    android:id="@+id/button" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="- I'm a Button -" 
    android:drawableTop="@drawable/icon" 
    /> 

Można również ustawić dopełnienie między tekstem a obrazem z Androidem : drawablePadding (int)

Atrybut drawableTop można zmienić na drawableRight, Left, Bottom itd. Powodzenia!

+0

To powinno zadziałać, używam tego samego kodu – erdomester

+2

@ Adam powinien być prawdopodobnie zaakceptowany. Myślę, że właśnie zaczął akceptować podniesienie swojego procentu. – FoamyGuy

+0

To działało dla mnie i czystsze niż niestandardowy widok! Ale chciałem dodać, że atrybut drawablePadding pozwala wstawiać dopełnienie między tekstem a ikoną. – Henry

0

Można spróbować coś takiego

<Button 
    android:id="@+id/ButtonTest" 
    android:text="this is text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="@drawable/icon" 
    **android:gravity="bottom"**/> 
0

Myślę, że najprostszym sposobem osiągnięcia tego celu (z czystego XML) to:

<LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:onClick="onClickMethod" 
     android:orientation="vertical" 
     android:clickable="true"> 
    <ImageView 
     android:src="@drawable/YOUR_DRAWABLE" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:clickable="false"/> 
    <TextView 
     android:text="@string/YOUR_TEXT" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"   
     android:clickable="false"/> 
</LinearLayout> 
4

Można również zrobić tak

enter image description here

<LinearLayout 
android:id="@+id/image_button_2" 
style="@android:style/Widget.Button" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_marginTop="15dp" 
android:gravity="center"> 

<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_marginRight="5dp" 
    android:src="@drawable/ic_gear" /> 

<TextView 
    android:id="@+id/image_button_2_text" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:textColor="@android:color/black" 
    android:text="Button 2" /> 

    </LinearLayout> 

W swojej działalności

final View button2 = findViewById(R.id.image_button_2); 
button2.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
1

enter image description here

<Button 
     android:layout_width="0dp" 
     android:layout_weight="1" 
     android:background="@drawable/home_button" 
     android:drawableLeft="@android:drawable/ic_menu_edit" 
     android:drawablePadding="6dp" 
     android:gravity="left|center" 
     android:height="60dp" 
     android:padding="6dp" 
     android:text="AndroidDhina" 
     android:textColor="#000" 
     android:textStyle="bold" /> 

o więcej informacji http://androiddhina.blogspot.in/2015/09/how-to-add-image-inside-button.html

Powiązane problemy