2
votes

Mise en page linéaire grisée Android

J'ai une mise en page linéaire qui contient un ensemble de vues enfants (mélange de texte, d'images et d'autres mises en page).

Je souhaite griser la mise en page linéaire et toutes les vues enfants afin qu'elles semblent désactivées (comme le fonctionne un bouton).

Est-ce possible d'y parvenir? Je sais que je peux définir un filtre de couleur lors de la peinture sur la toile, y a-t-il quelque chose de similaire pour les mises en page?


2 commentaires

ne peut pas simplement définir la couleur de fond?


non, car toutes les vues texte / enfant sont superposées au-dessus de la couleur d'arrière-plan. Donc, ils n'auront pas l'air handicapés.


3 Réponses :


0
votes

Une autre façon est d'appeler setEnabled () sur chaque enfant (par exemple, si vous voulez faire une vérification supplémentaire sur l'enfant avant de désactiver), consultez cette réponse: https://stackoverflow.com/a/7069377/4840812


2 commentaires

J'ai essayé ceci mais certaines des vues enfants ne se "grisent" pas automatiquement.


@MichaelEdwards essayez une solution améliorée stackoverflow.com/a/49364466/4840812



0
votes

Vous pouvez utiliser la disposition du cadre

En utilisant TEST ONE , vous pouvez obtenir la vue du texte ci-dessus comme désactivée. Vous pouvez définir la disposition racine cliquable sur false pour désactiver réellement les vues à l'intérieur de la disposition. TEST DEUX est à des fins de compréhension. Comme vous devez gérer l'ordre de vue pour montrer l'effet.

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent">
<!--THIS IS TEST ONE-->
<TextView
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:layout_marginTop="150dp"
    android:background="#000000"
    android:gravity="center"
    android:text="TEST DATA"
    android:textColor="@android:color/white"
    android:textSize="30sp" />

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:background="#DAD6D6D6"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Data"
        android:textColor="@color/colorAccent"
        android:textSize="30sp" />

</LinearLayout>

<!--THIS IS TEST TWO-->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:layout_marginTop="300dp"
    android:background="#DAD6D6D6"
    android:gravity="center"
    android:orientation="vertical">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Data"
        android:textColor="@color/colorAccent"
        android:textSize="30sp" />

</LinearLayout>

<TextView
    android:layout_width="match_parent"
    android:layout_height="100dp"
    android:layout_marginTop="400dp"
    android:background="#000000"
    android:gravity="center"
    android:text="TEST DATA"
    android:textColor="@android:color/white"
    android:textSize="30dp" />
</FrameLayout>


0 commentaires

0
votes

Pour réaliser votre mise en page, vous pouvez utiliser le RelativeLayout . Dans RelativeLayout, vous pouvez utiliser les 2 vues différentes ou LinearLayout . Dans la première mise en page, vous pouvez ajouter des vues selon vos besoins, et dans la deuxième mise en page, vous pouvez définir le code de couleur alpha pour désactiver la mise en page.

Veuillez essayer le code ci-dessous:

<RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:gravity="center">
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/demo_img_1" />
            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/demo_img_1"
                android:layout_marginLeft="20dp"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@color/trans"/>

    </RelativeLayout>

Voici la sortie pour le code:

 entrez la description de l'image ici


0 commentaires