Ho uno stile chiamato Red and Green e ho una statistica if per scoprire quale applicare, ma non conosco il codice per applicare effettivamente uno stile da java.Come si applica uno stile a livello di programmazione?
risposta
Ho scoperto che è possibile eseguire questa operazione solo durante la creazione di una vista dall'interno di Java. Se è definito in XML prima della mano, non è possibile modificare dinamicamente lo stile.
Come risponde la tua stessa domanda? –
È possibile applicare gli stili in modo programmatico a TextViews utilizzando il metodo setTextAppearance (contesto, residuo). (Il resId dello stile può essere trovato in R.style.YourStyleName)
Non esiste una soluzione di linea a questo problema, ma questo ha funzionato per il mio caso d'uso. Il problema è che il costruttore 'View (context, attrs, defStyle)' non fa riferimento a uno stile reale, vuole un attributo. Quindi, ci sarà:
- definire un attributo
- creare uno stile che si desidera utilizzare
- Applicare uno stile per l'attributo sul nostro tema
- creare nuove istanze della nostra vista con quell'attributo
In 'res/valori/attrs.xml', definire un nuovo attributo:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="customTextViewStyle" format="reference"/>
...
</resources>
In res/Valori/styles.xml 'ho intenzione di creare lo stile che voglio usare il mio TextView personalizzato
<style name="CustomTextView">
<item name="android:textSize">18sp</item>
<item name="android:textColor">@color/white</item>
<item name="android:paddingLeft">14dp</item>
</style>
In 'res/valori/themes.xml' o' res/valori/styles.xml', modificare il tema per la vostra applicazione/attività e aggiungere il seguente stile:
<resources>
<style name="AppBaseTheme" parent="android:Theme.Light">
<item name="@attr/customTextViewStyle">@style/CustomTextView</item>
</style>
...
</resources>
Infine, nella vostra TextView personalizzato, è ora possibile utilizzare il costruttore con l'attributo e riceverà il vostro stile. Qui, invece di sempre
public class CustomTextView extends TextView {
public CustomTextView(Context context, int styleAttribute) {
super(context, null, styleAttribute);
}
// You could also just apply your default style if none is given
public CustomTextView(Context context) {
super(context, null, R.attr.customTextViewStyle);
}
}
Con tutti questi componenti, è ora possibile fare una dichiarazione if/else per generare nuovi punti di vista in fase di esecuzione con lo stile che preferisci
CustomTextView ctv;
if(useCustomStyles == true){
ctv = new CustomTextView(context, R.attr.customTextViewStyle);
}else{
ctv = new CustomTextView(context, R.attr.someOtherStyle);
}
Vale la pena notare che ho utilizzato ripetutamente customTextView in diverse varianti e posizioni diverse, ma non è in alcun modo richiesto che il nome della vista corrisponda allo stile o all'attributo o altro. Inoltre, questa tecnica dovrebbe funzionare con qualsiasi visualizzazione personalizzata, non solo con TextViews.
Per me l'utilizzo di '
inserire questo codice
super.setStyle(R.style.yourownstyle)
prima setContentView() in onCreate
- 1. apache poi applica uno stile a diverse cartelle di lavoro
- 2. Impostazione del pulsante stile piano a livello di programmazione
- 3. CKEditor aggiunge paragrafi vuoti quando si applica uno stile
- 4. Come creare uno stile di tema Android a livello di programmazione?
- 5. Come si imposta lo stile di una TextView a livello di programmazione?
- 6. Come si aggiunge UIButton a UIToolBar a livello di programmazione?
- 7. Come rimuovere uno stile?
- 8. Come si crea un UIViewController a livello di programmazione?
- 9. Come si può rilanciare il Finder a livello di programmazione?
- 10. Come si ottiene l'imballaggio bidimensionale 2D a livello di programmazione?
- 11. Come si chiude UISearchDisplayController a livello di programmazione?
- 12. Come si rilevano i bot a livello di programmazione
- 13. Come si avvia un'applicazione JNLP a livello di programmazione?
- 14. Come si modifica un file .png a livello di programmazione?
- 15. , verificare a livello di programmazione
- 16. La creazione di un CardView a livello di codice non applica correttamente lo stile
- 17. Come nascondere UITabBarController a livello di programmazione?
- 18. come inviare sms a livello di programmazione?
- 19. Come impostare windowDrawsSystemBarBackgrounds a livello di programmazione?
- 20. Come disabilitare SparkUI a livello di programmazione?
- 21. Come configurare ELMAH a livello di programmazione?
- 22. Come attivare "Installato" a livello di programmazione?
- 23. Come programmare un'attività a livello di programmazione
- 24. Come aprire selezionare a livello di programmazione
- 25. Come utilizzare AcroTextExtractor.exe a livello di programmazione?
- 26. Ionico come tornare a livello di programmazione
- 27. Acquisire a livello di programmazione un'area specifica
- 28. Come ottenere a livello di programmazione il livello audio corrente?
- 29. Selettore CSS che applica uno stile a COLGROUP ma solo all'interno di TBODY (non THEAD)?
- 30. Impostazione degli stili delle viste aggiunte a livello di programmazione
duplicato esatto: http://stackoverflow.com/questions/2016249/how-to-programmatically-setting-style-attribute- in-a-view, http://stackoverflow.com/questions/3246447/how-to-set-the-style-attribute-programmatically-in-android, ecc. Si prega di cercare prima di chiedere –
controllare questo link. http://www.anddev.org/view-layout-resource-problems-f27/how-to-programmatically-set-button-style-t8656.html questo dovrebbe aiutare –