J'essaie de, un peu cloner la conception d'une activité à partir d'un ensemble de diapositives sur la conception de l'interface utilisateur Android . Cependant, j'ai un problème avec une tâche très simple.
J'ai créé la mise en page comme indiqué dans l'image et l'en-tête est une TextView
dans une RelativeLayout
. Maintenant, je souhaite changer la couleur de fond de la RelativeLayout
, mais je n'arrive pas à comprendre comment.
Je sais que je peux définir la propriété Android:background
dans la balise RelativeLayout
du fichier XML, mais à quoi dois-je la définir? Je veux définir une nouvelle couleur que je peux utiliser à plusieurs endroits. Est-ce une drawable
ou une string
?
De plus, je m'attendrais à ce qu'il existe un moyen très simple d'y parvenir à partir du concepteur d'interface utilisateur Android Eclipse que je dois manquer?
Je suis un peu frustré actuellement, car il s’agit là d’une activité réalisée en quelques clics maximum. Donc, toute aide est très appréciée. :)
Vous pouvez utiliser ressources colorimétriques simples , spécifié généralement dans res/values/colors.xml
.
<color name="red">#ffff0000</color>
et utilisez ceci via Android:background="@color/red"
. Cette couleur peut être utilisée n’importe où ailleurs, par exemple. comme une couleur de texte. Référencez-le en XML de la même manière, ou obtenez-le en code via getResources().getColor(R.color.red)
.
Vous pouvez également utiliser n’importe quelle ressource dessinable en tant que fond, utilisez Android:background="@drawable/mydrawable"
pour cela (c’est-à-dire 9patch drawables, bitmaps normal, shape drawables, ..).
Les réponses ci-dessus sont bien. Vous pouvez également procéder ainsi si vous le souhaitez.
Tout d'abord, votre mise en page doit avoir un identifiant. Ajoutez-le en écrivant la ligne suivante +id
dans res/layout/*. Xml
<RelativeLayout ...
...
Android:id="@+id/your_layout_id"
...
</RelativeLayout>
Ensuite, dans votre code Java, apportez les modifications suivantes.
RelativeLayout rl = (RelativeLayout)findViewById(R.id.your_layout_id);
rl.setBackgroundColor(Color.RED);
à part cela, si vous avez la couleur définie dans le fichier colors.xml, vous pouvez aussi faire par programme:
rl.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.red));
Vous pouvez utiliser Android:background="#DC143C"
ou toute autre valeur RGB pour votre couleur. Je n'ai aucun problème à l'utiliser de cette façon, comme indiqué ici _
Le
res/values/colors.xml.
<color name="red">#ffff0000</color>
Android:background="@color/red"
exemple n'a pas fonctionné pour moi, mais le
Android:background="#(hexidecimal here without these parenthesis)"
travaillé pour moi dans l'élément de mise en page relatif en tant qu'attribut.
Si vous souhaitez modifier une couleur rapidement (et que vous n'avez pas de numéros hexadécimaux mémorisés), Android a quelques couleurs prédéfinies auxquelles vous pouvez accéder comme ceci:
Android:background="@Android:color/black"
Vous pouvez choisir parmi 15 couleurs, ce qui est pratique pour tester rapidement les choses, et vous n'avez pas besoin de configurer de fichiers supplémentaires.
Configurer un fichier values / colors.xml et utiliser un hexagone droit, comme expliqué ci-dessus, fonctionnera toujours.
Kotlin
linearLayout.setBackgroundColor(Color.rgb(0xf4,0x43,0x36))
ou
<color name="newColor">#f44336</color>
-
linearLayout.setBackgroundColor(ContextCompat.getColor(Vista.context, R.color.newColor))
4 façons possibles, utilisez celle dont vous avez besoin.
val ll = findViewById<LinearLayout>(R.id.your_layout_id)
ll.setBackgroundColor(ContextCompat.getColor(this, R.color.white))
<LinearLayout
Android:background="@{@color/white}"
OUplus utile déclaration-
<LinearLayout
Android:background="@{model.colorResId}"
<LinearLayout
Android:background="#FFFFFF"
<LinearLayout
Android:background="@color/white"
LinearLayout ll = (LinearLayout) findViewById(R.id.your_layout_id);
ll.setBackgroundColor(ContextCompat.getColor(this, R.color.white));
Les réponses sont avant tout statiques. Je pensais apporter une réponse dynamique. Les deux fichiers devant être synchronisés sont le foo.xml
relatif avec la mise en page et le activity_bar.Java
qui correspond à la classe Java correspondant à ce R.layout.foo
.
Dans foo.xml
, définissez un identifiant pour la mise en page complète:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout Android:id="@+id/foo" .../>
Et dans activity_bar.Java
définissez la couleur dans la onCreate()
:
public class activity_bar extends AppCompatActivty {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.foo);
//Set an id to the layout
RelativeLayout currentLayout =
(RelativeLayout) findViewById(R.id.foo);
currentLayout.setBackgroundColor(Color.RED);
...
}
...
}
J'espère que ça aide.