Opacité sur une image dessinable en arrière-plan en vue (en utilisant la mise en page XML)

, je me demandais juste si il y avait un moyen de changer l'opacité de l'image d'arrière-plan pour un View (ie. 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 ceci:

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 mise en page XML. Je sais déjà que je pourrais attraper le Drawable objet et définir par programme l'alpha, mais je veux voir si je peux le faire dans la mise en page.

21
demandé sur xil3 2011-02-11 15:18:14

5 réponses

J'ai fini par aller avec la solution programmatique, car il ne semble pas que cela puisse être fait via les mises en page 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);
31
répondu xil3 2011-02-14 08:51:58

, Cela pourrait rendre votre Travail plus simple

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

À Partir De: Cette Réponse

13
répondu Mani 2017-05-23 12:10:36

Vous pouvez également utiliser XML pour modifier la transparence:

android:alpha = "0.7"

La valeur de l'alpha est comprise entre 0 et 1

7
répondu Alireza 2015-09-20 07:57:30

Vous pouvez intégrer l'image en xml, de sorte que vous serez en mesure de le voir dans la mise en page 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);
5
répondu Shlomi Hasin 2017-04-19 18:39:01

La réponse que vous avez donnée ne répondait 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
répondu JohnnyLambada 2012-03-13 18:39:58