2015-03-13 3 views
2

Je veux faire la mise en page comme suit:sur mesure LinearLayout

enter image description here

Pour que je aura besoin de trois arrière-plans comme celui-ci:

This is one layout

this is another layout

this is another

je aurai besoin de combiner tous et

lors de l'exécution, je dois changer la couleur de fond de chaque

donc je pensais faire LinearLayout sur mesure.

Mais je ne sais pas comment faire comme ça.

J'ai vérifié quelques exemples de mise en page triangulaire et en parallélogramme, mais je veux aussi fusionner les trois vues. Merci de donner des liens utiles et de donner un exemple de code plutôt que de donner des références.

Merci d'avance. :)

J'ai essayé la mise en page relative. pour RemoteView, j'ai essayé ceci:

ColorFilter cf = new PorterDuffColorFilter(-15032095, Mode.MULTIPLY); 
     Drawable d= context.getResources().getDrawable(R.drawable.panel1); 
     d.mutate(); 
     d.setColorFilter(cf); 

J'ai essayé ci-dessous les codes:

rv.setInt(R.id.rl_noti_main, "setColorFilter", d); 
rv.setInt(R.id.rl_noti_main, "setBackgroundDrawable", -15032095); 
rv.setInt(R.id.rl_noti_main, "setBackgroundResources",d); 
+0

au lieu d'utiliser des images, vous devez utiliser la toile et dessiner des formes sur l'aide des couleurs de remplissage. –

+0

Merci Amrut pour répondre. Pouvez-vous suggérer du code et pouvez-vous me suggérer comment dessiner? – kiturk3

+0

Pourquoi ne pas joindre ces images verticalement dans photoshop et l'utiliser comme arrière-plan. – Apurva

Répondre

1

mise en page du cadre try ou disposition relative. vous devez chevaucher chaque vue pour réaliser ceci qui ne peut pas être fait dans la disposition linéaire. rendre chaque image en rectangle avec une zone transparente dont la partie doit se chevaucher.

+0

okk, essayez avec relativelayout. :) – kiturk3

+0

Salut @Sayem .... J'ai essayé avec Relative Layout mais le problème est le même ... Je dois changer la couleur de chaque vue de façon dynamique et il y aura aussi du textview sur chaque vue. :( – kiturk3

+0

Utilisez colorfilter pour changer dynamiquement la couleur de l'image Si la disposition relative crée un problème, essayez framelayot ​​ – Sayem

0

Option 1

Pensez à faire une vue personnalisée. Vous allez étendre la classe View et remplacer la méthode onDraw. Dans la méthode onDraw, vous allez dessiner vos formes spéciales. Vous pouvez également créer une méthode pour définir les couleurs de chaque partie. Lisez d'abord le documentation. Cela donne un aperçu assez complet. Recherchez ensuite des didacticiels sur le dessin et la création de vues personnalisées. Suivez le long et au moment où vous avez terminé, vous devriez être prêt à vous essayer.

Voici quelques tutoriels qui sont venus mais je suis sûr que vous pouvez trouver plus.

Option 2

Créez vos trois formes comme des images blanches (ou peut-être que 9-patch images selon la façon dont vous avez besoin de redimensionner pour différentes mises en page) . Les parties que vous ne voulez pas colorier peuvent être transparentes. Je pourrais même faire l'image du milieu comme un grand rectangle (ou même une simple vue rectangulaire) et superposer les deux autres images sur le dessus.Puis utilisez un RelativeLayout pour empiler ou chevaucher les images les unes sur les autres. Après cela, utilisez Drawable.setColorFilter pour modifier la couleur par programme. Voir les liens ci-dessous. Cela semble avoir été un succès pour beaucoup de gens.

+0

ma première pensée faisait la même chose que vous avez suggéré, mais cela peut prendre du temps et s'il n'y a pas d'autre option que cela, je dois utiliser cette solution seulement. :) – kiturk3

+0

Voir ma deuxième option si vous ne voulez pas faire une vue personnalisée. – Suragch

+0

oui mais comment changer de couleur dans remoteview comme je l'ai mentionné que je le veux pour la vue du widget – kiturk3