Ciao,
avrei una domandina da farvi circa la gestione degli stili e dei temi:
Con Eclipse ho creato un nuovo progetto Android ed ho definito il seguente layout tramite il file /res/layout/main.xml che semplicemente visualizza 2 bottoni:
codice:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
<Button android:text="styleButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/styleButton"
style="@style/MyButtonStyle">
</Button>
<Button android:text="Bottone 2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/styleButton"
style="@style/MyButtonStyle">
</Button>
</LinearLayout>
Come si può vedere ai bottoni è impostato uno stile: MyButtonStyle
Poi ho definito il seguente file res/values/styles.xml che definisce un tema ed uno stile:
codice:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyTheme" parent="android:Theme.Black">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@color/red</item>
<item name="android:buttonStyle">@style/MyButtonStyle</item>
</style>
<style name="MyButtonStyle" parent="@android:style/Widget.Button">
<item name="android:textColor">@color/blue</item>
<item name="android:height">@dimen/button_height_dp</ite+ Allegati ed altre opzioni
scorciatoie: premi shift+alt+s per insem>
<item name="android:width">@dimen/button_width_dp</item>
</style>
</resources>
Il tema imposta delle proprietà generali come lo sfondo rosso e dice che per tutti i bottoni devo usare lo stile MyButtonStyle definito sotto
DOMANDE:
1) Mi pare di capire che visto che nel file styles.xml nel tema definisco lo stile per tutti i bottoni (tramite android:buttonStyle), se voglio che tutti i bottoni abbiano lo stesso stile potrei anche risparmiarmi l'attributo style="@style/MyButtonStyle" dentro il file main.xml che definisce il layout, giusto?
2) Le dimensioni dei bottoni sono definite in un file /res/values/dimens.xml, ad esempio ho fatto la prova a dargli dimensioni di 160dp in larghezza e 160dp in altezza, ed in effetti ottengo 2 bottoni quadrati come mi aspetto...
Ora però c'è una cosa che non mi torna, come potete vedere ho definito le dimensioni dei bottoni dentro al file res/values/styles.xml.
Dentro al file /res/layout/main.xml per ogni bottone faccio:
codice:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
cosa definiscono esattamente questi 2 attributi? perchè pensando che vengano sovrascritti dagli attributi che definiscono la dimensione dei bottoni nel file di stile styles.xml, ho provato ad eliminarli ma a questo punto l'applicazione non parte più...quindi credo che rappresentino altro...cosa mi sfugge?
3) Nel file del layout main.xml come potete vedere per ogni bottone definisco un id così:
codice:
android:id="@+id/styleButton"
Perchè la'utore dell'esempio mette il simbolo + davanti all'id? cosa rappresenta esattamente?
4) Provando a mettere un background al bottone, dentro al file style.xml metto:
codice:
<style name="MyButtonStyle" parent="@android:style/Widget.Button">
<item name="android:textColor">@color/blue</item>
<item name="android:height">@dimen/button_height_dp</item>
<item name="android:width">@dimen/button_width_dp</item>
<item name="android:background">@color/green</item>
</style>
impostando un colore di background verde (definito in un file xml) succede che i bottoni diventano effettivamente verdi ma perdono la caratteristica classica dei bottoni ovvero quella che quando si clicka un bottone questo cambia colore ed inoltre ora tra i 2 bottoni verdi non viene più lasciato uno spazio
Probabilmente sono banalità ma vorrei fare un po' di chiarezza su questi argomenti
Grazie
Andrea