Desidero avere il margine predefinito per EditText di 10dp. Pertanto, nel mio file styles.xml Ho creato la seguente:Android - i margini specificati nello stile personalizzato non hanno effetto
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<style name="MyTheme" parent="android:style/Theme.NoTitleBar">
<item name="android:editTextStyle">@style/edit_text_default</item>
</style>
<style name="edit_text_default" parent="android:style/Widget.EditText">
<item name="android:layout_margin">10dp</item>
</style>
</resources>
Poi nel AndroidManifest.xml, ho impostato il tema delle applicazioni a quella che ho definito:
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/MyTheme" >
...
Il "No Title Bar "l'aspetto del tema sta funzionando. Tuttavia, il margine predefinito per EditText non lo è, continua a riempire il genitore. Ecco la mia vista tabella:
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF" >
<TableRow>
<EditText android:hint="@string/last_name" />
</TableRow>
<TableRow>
<EditText android:hint="@string/first_name" />
</TableRow>
</TableLayout>
W ... T ... F ?? perché? perché? PERCHÉ?!?! ... per favore perdonami ... Sto perdendo la testa con tutte le stranezze dello sviluppo Android. – pbarranis
Questa risposta è in qualche modo insoddisfacente - i margini di layout non sono ancora applicati anche quando il ViewGroup padre e la Vista figlio si trovano nello stesso file xml di layout. In questo caso l'inflattore * conosce * il tipo concreto del ViewGroup padre (perché lo ha semplicemente gonfiato) e conosce anche lo stile da applicare (perché vengono applicati altri attributi di stile). –