Ho alcuni pulsanti come questo nella mia app:
<Button
android:id="@+id/bSearch"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="16dp"
android:text="Search"
android:textSize="24sp" />
Sto cercando di creare uno stesso pulsante con testo e un'icona. android: drawableLeft non funziona per me (forse lo farebbe, ma non so come impostare un'altezza massima per l'icona).
Quindi ho creato un LinearLayout con ImageView e TextView e l'ho fatto agire come un pulsante:
<LinearLayout
android:id="@+id/bSearch2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:drawable/btn_default"
android:clickable="true"
android:padding="16dp"
android:orientation="horizontal" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginLeft="5dp"
android:adjustViewBounds="true"
android:maxHeight="30dp"
android:maxWidth="30dp"
android:scaleType="fitCenter"
android:src="@drawable/search_icon" />
<TextView
android:id="@+id/tvSearchCaption"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:textSize="24sp"
android:paddingRight="30dp"
android:gravity="center"
android:text="Search" />
</LinearLayout>
Il mio nuovo pulsante è esattamente quello che voglio (dimensione del carattere, icona e posizionamento del testo). Ma non sembra i miei pulsanti predefiniti:
Quindi ho provato a cambiare lo sfondo e il colore del testo del mio nuovo Button:
Button Search = (Button) findViewById(R.id.bSearch);
LinearLayout bSearch2 = (LinearLayout) findViewById(R.id.bSearch2);
bSearch2.setBackground(bSearch.getBackground());
TextView tvSearchCaption = (TextView)findViewById(R.id.tvSearchCaption);
tvSearchCaption.setTextColor(bSearch.getTextColors().getDefaultColor());
Questo dà uno strano risultato, il mio vecchio pulsante, si incasina:
Quando cambio l'ordine di questi due pulsanti nell'XML, quindi il "nuovo pulsante" va per primo, produce un altro strano risultato:
Ora ho notato che quando provo a premere il vecchio pulsante, viene premuto quello nuovo.
Qualche idea?