2012-01-16 8 views
6

Desidero separare l'utilizzo della mia applicazione su dispositivi xlarge e l'utilizzo su altri dispositivi per limitare il parametro layout_width di 720dp per xlarge. A tal fine creo valori/attrs.xml:Come riferirsi all'attributo android layout_width dall'attributo personalizzato?

<?xml version="1.0" encoding="UTF-8"?> 
<resources> 
    <attr name="layoutWidth" format="reference|dimension" /> 
</resources> 

con parametro personalizzato layoutWidth per impostare in

android:layout_width="?layoutWidth" 

Furtner, devo specificare due file themes.xml per xlarge e ordinaria dispositivi in ​​valori-XLarge e valori directory:

valori-XLarge/la mes.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme" parent="android:Theme"> 
     <item name="layoutWidth">720dp</item> 
    </style> 
</resources> 

valori/themes.xml

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme" parent="android:Theme"> 
     <item name="layoutWidth">What should I write here!?</item> 
    </style> 
</resources> 

Quindi, come posso fare un riferimento su Android parametro "fill_parent" in questo luogo? Sembra che @android: layout_width/fill_parent, ma ho Errore durante la compilazione:

No resource found that matches the given name (at 'layoutWidth' with value '@android:layout_width/fill_parent'). 

risposta

7

ho trovato una soluzione per mezzo di cambiamento valori/attrs.xml a:

<?xml version="1.0" encoding="UTF-8"?> 
<resources>  
    <attr name="layoutWidth" format="dimension"> 
     <enum name="fill_parent" value="-1" /> 
     <enum name="match_parent" value="-1" /> 
     <enum name="wrap_content" value="-2" /> 
    </attr> 
</resources> 

ora, posso scrivere in valori/themes.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <style name="Theme" parent="android:Theme"> 
     <item name="layoutWidth">match_parent</item> 
    </style> 
<resources> 

Ma la domanda rimane ancora: è possibile fare riferimento al parametro layout_width di Android da questo posto?

+0

bene .. questo è meglio di niente .... Tali costanti sono nel Javadoc ufficiale non dovrebbero cambiare troppo presto ... Ad essere onesti e fill_parent match_parent è stato incorporato in un costante singola (-1) ad un certo punto. Erano diversi all'inizio. –

0

Non sono sicuro se è possibile aggiungere questo attributo da qualche parte nelle risorse o tag di stile, ma può aiutare (se il suo legale)

xmlns: Android = "http://schemas.android.com/apk/ res/android "

Specifica lo spazio dei nomi in cui layout_width e layout_height sono definiti (così come le costanti fill_parent e wrap_content).

1

Bene, questa è una risposta in ritardo ... ma, per i posteri e la sanità mentale, la risposta può essere trovata qui sotto e ulteriori informazioni sono disponibili all'indirizzo http://developer.android.com/guide/topics/ui/themes.html

styles.xml:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
<style name="YourStyle" parent="@android:style/TextAppearance.Medium"> 
     <item name="android:layout_width">fill_parent</item> 
     <item name="android:layout_height">wrap_content</item> 
    </style> 
</resources> 

Questo dovrebbe funzionare per qualsiasi genitore che usi android: layout_width, come parent = "@ android: style/Widget.TextView"

0

Si dovrebbe creare il file attrs.xml nella cartella dei valori e quindi aggiungere il codice seguente in esso:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <item name="custom_match_parent" type="dimen">-1</item> 
    <item name="custom_wrap_content" type="dimen">-2</item> 
</resources> 

Per accedere a quanto sopra creato attrs.xml aggiungere la riga sottostante all'interno delle dimensioni.file XML come segue:

<dimen name="max_layout_width">@dimen/custom_match_parent</dimen> 

Ora per accedere che da un file di layout è necessario fare qualcosa di simile

<FrameLayout 
    android:layout_width="@dimen/max_layout_width" 
    android:layout_height="match_parent"> 
    <!--Do what you like to do here--> 
</FrameLayout> 

Spero che questo aiuti! :-)

Problemi correlati