2016-02-26 11 views
5

Tworzę okno logowania z polami nazwy użytkownika i hasła oraz w każdym z nich chciałbym umieścić ikony. Kiedy dodaję ikonę do pola EditText, nie mogę zmienić rozmiaru ikony.Czy można zmienić rozmiar ikony wewnątrz EditText?

Ikona znajduje się w polu EditText, ponieważ chcę zmienić tło EditText, gdy jest ono skupione.

Próbowałem umieścić ikonę i widok EditText w LinearLayout, ale nie mogłem zmienić tła układu, gdy EditText jest skupiony.

Mój kod EditText:

<EditText 
    android:id="@+id/user_name_edit_text" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="35dp" 
    android:layout_marginRight="35dp" 
    android:layout_marginTop="35dp" 
    android:background="@drawable/custom_border_selector" 
    android:drawablePadding="5dp" 
    android:hint="@string/username" 
    android:singleLine="true" 
    android:textColor="#757575" 
    android:textSize="15sp" 
    android:drawableLeft="@drawable/ic_person_grey_24dp" 
    /> 

EditText wizualny:

enter image description here

+0

Sprawdź ten link: http: //stackoverflow.com/questions/20250638/how-to-create-edittext-hint-as-text-with-image-in-android – Mrunal

+0

@ Rohit5k2 To zabrzmi głupio mnie, ale nie myślałem o tym, dzięki. Jeszcze jedno pytanie, nie mogłem znaleźć metody na dodanie dopełnienia lub marginesu dla obrazu? Próbowałem google, kilka godzin i żadnych przydatnych informacji. – JonasSeputis

+0

@ JonasSeputis: Proszę sprawdzić. – Rohit5k2

Odpowiedz

5

Można zmienić ikonę i użyj mniejszy na ostrości. Jest to metoda, z której powinieneś skorzystać.

public void setCompoundDrawablesWithIntrinsicBounds (
             int left, int top, int right, int bottom) 

Ustawia kanału alfa (jeśli występuje) pojawiają się po lewej, wyżej, po prawej stronie, a poniżej tego tekstu. Użyj 0, jeśli nie chcesz tam Rysować. Granice Szuflad zostaną ustawione na ich wewnętrzne granice.

Teraz dodać dopełnienie można użyć tego

public void setCompoundDrawablePadding (int pad) 

Ustawia rozmiar wypełniania kanału alfa między związkiem i tekstu.

Powiązane XML Atrybuty:

android:drawablePadding 

Więcej informacji here i here. Istnieje wiele innych metod, które mogą Cię zainteresować.

10

W przypadku chcesz, aby rozwiązać problem w XML, oto przykładowy kod, w którym można manipulować rozmiar obrazu/padding:

<!-- USERNAME INPUT --> 
<RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:background="@drawable/edit_text_selector"> 

    <!-- INPUT --> 
    <EditText 
     android:id="@+id/username_input" 
     android:layout_marginLeft="-10dp" 
     android:layout_toRightOf="@+id/username_icon" 
     android:text="" 
     android:hint="Username" 
     android:padding="10dp" 
     android:background="" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

    <!-- ICON --> 
    <ImageView 
     android:padding="3dp" 
     android:id="@+id/username_icon" 
     android:src="@drawable/perm_group_personal_info" 
     android:layout_width="40dp" 
     android:layout_height="40dp" /> 

</RelativeLayout> 

A oto jak to wygląda:

enter image description here

1

Lepszym sposobem niż ustawienie przez java byłoby ustawienie go wewnątrz warstwowego losowania w następujący sposób.

Layered list drawable is as under : 

    <?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item 

     > 
     <shape> 
      <solid android:color="@color/bg_row_drop_completed"/> 
      <size android:width="96dp" 
       /> 
      <padding android:top="-15dp" 
       android:bottom="-15dp"/> 
      <corners android:topLeftRadius="@dimen/btn_add_bg_radius_purple" android:topRightRadius="@dimen/btn_add_bg_radius_purple"/> 
     </shape> 
    </item> 
    <item 
     > 
     <bitmap android:src="@drawable/_ic_arrow_drop_up_normal" android:gravity="center_vertical" 
      ></bitmap> 
    </item> 
</layer-list>[enter image description here][1] 
+0

wydaje się nie działać na API 19? – Sam

Powiązane problemy