French Reflector - Listview avec coins arrondis

philgoodgood

Member
Licensed User
Longtime User
Reflector - Listview avec coins arrondis (utilisation d'un fichier xml)

bonjour

Bon la : ( j'ai de réelles difficultés à réaliser une Listview avec coins arrondis en utilisant un fichier XML.

A l'issue des excellents tutos d'Erel (image 9-patch), d'Informatix (mais comment font-ils), warwound (xml file) et de Klaus (Reflector) je me suis dit "bingo" à toi lol

J'ai trouvé sur le site stackoverflow un fichier roundedcorner.xml qui fait celà
et pour l'intégrer à mon package je dois exécuter en java "ListView.(R.drawable.roundedcorner);"

Mais voilà de la théorie à la pratique ..... et ben il me manque encore quelques liens .... ou de bons tuyaux ... Merci à vous

Mon environnement : Galaxy note 2 - B4a v1.50 sur android api-16 - Reflector v2.10

Fichier roundedcorner.xml
B4X:
<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle" >
<gradient
   android:angle="90"
   android:endColor="#C0C0C0"
   android:startColor="#808080" />
<corners
   android:bottomLeftRadius="7dp"
   android:bottomRightRadius="7dp"
   android:topLeftRadius="7dp"
   android:topRightRadius="7dp" />
<stroke
   android:width="1px"
   android:color="#000000" />
</shape>

ce fichier xml, attributs en "lecture seule", est placé dans mon dossier ..../objects/res/drawable


Extrait de mon appli :
B4X:
'Activity module
Sub Process_Globals

End Sub

Sub Globals
   Dim p1, p2 As Panel
   Dim ListView1 As ListView   
End Sub

Sub Activity_Create(FirstTime As Boolean)
   Activity.LoadLayout("Glossaire")
   AfficheGlossaire
End Sub

Sub AfficheGlossaire
   ...
   p1.Initialize("p1")
   Activity.AddView (p1, 0, 0, Activity.Width, Activity.Height)
   ...
   ListView1.Initialize("ListView1")
   p1.AddView(ListView1, 5%x, 95dip, 90%x, 80%y) 
   ...
   ' To create a listview with rounded corners create a shape in xml
   '  Create roundedcorner.xml in the res/drawable
   SetDrawable(ListView1, "roundedcorner")

End Sub

Sub SetDrawable(Control As ListView, XMLName As String)
'***  In java set your listview : ListView.(R.drawable.roundedcorner);
    Dim r As Reflector
    Dim package As String
    Dim id As Int
    package = r.GetStaticField("anywheresoftware.b4a.BA", "packageName")
    id = r.GetStaticField(package & ".R$drawable", XMLName)
    r.Target = r.GetContext
    r.Target = r.RunMethod("getResources")
    Control.Background = r.RunMethod2("getDrawable", id, "java.lang.int")
End Sub

A l'exécution une exception est levée sur la ligne id = r.GetStaticField( ..... :
..... java.lang.NoSuchFieldException: roundedcorner

En vous remerciant pour vos conseils
 
Last edited:

philgoodgood

Member
Licensed User
Longtime User
Merci de ta réponse rapide klaus, ca fonctionne bien

mais le but de mon exercice était de faire prendre en compte un fichier xml par B4a en utilisant la librairie reflector

Si tu peux rejeter un oeil dans cette optique je t'en remercie : Sign0060:
 

Informatix

Expert
Licensed User
Longtime User
Merci de ta réponse rapide klaus, ca fonctionne bien

mais le but de mon exercice était de faire prendre en compte un fichier xml par B4a en utilisant la librairie reflector

Si tu peux rejeter un oeil dans cette optique je t'en remercie : Sign0060:

B4A n'est pas conçu pour utiliser ce genre de fichiers XML. Et avec la bibliothèque Reflector, tu n'iras pas plus loin. Tu pourrais le lire, mais pas l'utiliser car il faut passer ces paramètres au constructeur de la classe.
 

philgoodgood

Member
Licensed User
Longtime User
bonsoir
Merci pour ces précisions Informatix

++
 
Top