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?
3 Réponses :
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
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
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>
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:
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.