web-dev-qa-db-fra.com

Opacité sur un arrière-plan Image dessinable dans la vue (en utilisant la disposition XML)

Je me demandais simplement s'il y avait un moyen de changer l'opacité de l'image d'arrière-plan pour un View (c'est-à-dire. TextView, etc.).

Je sais que je peux définir l'image d'arrière-plan comme ceci:

Android:background="@drawable/my_drawable_image"

Ou je peux définir une couleur d'arrière-plan spécifique avec un paramètre alpha comme celui-ci:

Android:background="#10f7f7f7"

Existe-t-il un moyen de contrôler l'opacité (définir l'alpha) si je définis l'arrière-plan comme une image dessinable? Et je veux le faire dans la disposition XML. Je sais déjà que je pourrais saisir l'objet Drawable et définir l'alpha par programme, mais je veux voir si je peux le faire dans la mise en page.

24
xil3

J'ai fini par me contenter de la solution de programmation, car il ne semble pas que cela puisse être fait via les dispositions XML.

Drawable rightArrow = getResources().getDrawable(R.drawable.green_arrow_right_small);

// setting the opacity (alpha)
rightArrow.setAlpha(10);

// setting the images on the ImageViews
rightImage.setImageDrawable(rightArrow);
33
xil3

Cela pourrait simplifier votre travail

View backgroundimage = findViewById(R.id.background);
Drawable background = backgroundimage.getBackground();
background.setAlpha(80);

Valeurs alpha 0-255, 0 signifie entièrement transparent et 255 signifie entièrement opaque

de: Cette réponse

14
Mani

Vous pouvez également utiliser XML pour modifier la transparence:

Android:alpha = "0.7"

La valeur de alpha varie de 0 à 1

9
Alireza

Vous pouvez incorporer l'image au format xml, vous pourrez donc la voir dans la disposition graphique

<LinearLayout
        style="@style/LoginFormContainer"
        Android:id="@+id/login_layout"
        Android:orientation="vertical" 
        Android:background="@drawable/signuphead">

Et changez le code comme ceci pour le rendre transparent:

Drawable loginActivityBackground = findViewById(R.id.login_layout).getBackground();
loginActivityBackground.setAlpha(127);
6
Shlomi Hasin

La réponse que vous avez donnée ne répond pas exactement à la question que vous avez posée. Voici ce que j'ai fait.

    Drawable login_activity_top_background = getResources().getDrawable(R.drawable.login_activity_top_background);
    login_activity_top_background.setAlpha(127);
    LinearLayout login_activity_top = (LinearLayout) findViewById(R.id.login_activity_top);
    login_activity_top.setBackgroundDrawable(login_activity_top_background);
2
JohnnyLambada