2 votes

Changez linearLayout en foncé avec tout le contenu

Je voudrais faire le même effet avec linearlayout comme lorsque vous appelez showDialog. Il est facile de désactiver tous les composants de la disposition linéaire, mais comment puis-je changer la couleur ?

Est-il possible de projeter un peu d'ombre sur la mise en page ?

Merci pour la réponse.

1voto

vlkpo Points 189

Grâce au conseil d'Asok, j'ai trouvé ceci :

Définir l'alpha/opacité de la mise en page

Il fonctionne correctement pour moi.

La façon dont j'ai réglé le paramètre "clickable" sur tous les enfants :

TraverseChildren(GetChildren(_llRest), false);

private void TraverseChildren(ArrayList<View> childrenList, boolean b) {
    for (View view : childrenList) {

        view.setClickable(b);
        view.setEnabled(b);

        if (view instanceof ViewGroup)
            TraverseChildren(GetChildren((ViewGroup)view), b);
    }   
}

private ArrayList<View> GetChildren(ViewGroup view) {
    ArrayList<View> children = new ArrayList<View>();
        for (int i = 0; i < view.getChildCount(); i++) 
            if (view.getChildAt(i) != null)
                children.add(view.getChildAt(i));
    return children;
}

0voto

ZhDev Points 244

Je ne pense pas avoir bien compris ce que vous voulez faire. Si vous souhaitez simplement modifier la couleur de la mise en page, vous pouvez le faire dans la déclaration XML à l'aide de la balise android:background ou de façon programmatique en utilisant la méthode setBackground o setBackgroundResource sur votre objet de mise en page. Si vous souhaitez que l'activité que vous allez afficher ressemble à une boîte de dialogue (avec un arrière-plan translucide, etc.), le plus simple est de laisser tout ce qui se trouve sur cette mise en page comme vous le feriez normalement et d'appliquer un thème à l'activité sur le manifeste :

<activity android:theme="@android:style/Theme.Dialog">

0voto

Asok Points 4986

Vous pouvez setAlpha au parent pour appliquer une transparence à tous les enfants de Views.

Voici un exemple de l'approche que j'ai adoptée lorsque j'ai créé une vue pour recouvrir ma mise en page principale :

RelativeLayout mainRelativeLayout = (RelativeLayout)findViewById(R.id.mainlayout);
mainRelativeLayout.setAlpha((float).45);

Mon mainRelativeLayout dans ce cas, contient de nombreux ImageViews y TextViews qui ont tous hérité de la transparence. Ce qui m'a donné l'effet d'avoir une ombre.


setAlpaha de la View La classe n'est prise en charge que pour l'API 11+ ou la version de la plate-forme / Android OS Ver 3.0+.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X