Aller au contenu

ListView qui depasse sur ma tableLayout


gogui63

Recommended Posts

Bonjour à tous je viens chercher un peu d'aide car j'ai un problème avec mon application :

Dans mon application , il y a 5 onglets ( onglet en bas de page : android:layout_alignParentBottom="true" )

Mais le problème c'est que dans un de mes onglet j'ai plusieurs listView qui "dépasse" sur mes différents onglets et je ne vois pas comment adapter ...

Voici quelques Screens :

screenshothhe.png

capturevvi.jpg

Et mon code :

Tab2 :

package com.androiddev.tab;

import android.app.Activity;

import android.os.Bundle;

import android.app.Activity;

import java.util.ArrayList;

import java.util.HashMap;

import com.androiddev.tab.R;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.AdapterView;

import android.widget.ListView;

import android.widget.SimpleAdapter;

import android.widget.AdapterView.OnItemClickListener;

public class Tab2 extends Activity {

private ListView maListViewPerso2;

private ListView maListViewPerso3;

private ListView maListViewPerso4;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.onglet2);

//Récupération de la listview créée dans le fichier main.xml

maListViewPerso2 = (ListView) findViewById(R.id.listView2);

//Création de la ArrayList qui nous permettra de remplire la listView

ArrayList<HashMap<String, String>> listItem = new ArrayList<HashMap<String, String>>();

//On déclare la HashMap qui contiendra les informations pour un item

HashMap<String, String> map;

//Création d'une HashMap pour insérer les informations du premier item de notre listView

map = new HashMap<String, String>();

//on insère un élément titre que l'on récupérera dans le textView titre créé dans le fichier affichageitem.xml

map.put("titre", "1 - Nombres complexes >");

//enfin on ajoute cette hashMap dans la arrayList

listItem.add(map);

//On refait la manip plusieurs fois avec des données différentes pour former les items de notre ListView

map = new HashMap<String, String>();

map.put("titre", "2 - Probabilités >");

listItem.add(map);

map = new HashMap<String, String>();

map.put("titre", "3 - Etude de fonction >");

listItem.add(map);

//Création d'un SimpleAdapter qui se chargera de mettre les items présent dans notre list (listItem) dans la vue affichageitem

SimpleAdapter mSchedule = new SimpleAdapter (this.getBaseContext(), listItem, R.layout.afichageitem,

new String[] {"titre" }, new int[] { R.id.titre});

//On attribut à notre listView l'adapter que l'on vient de créer

maListViewPerso2.setAdapter(mSchedule);

maListViewPerso3 = (ListView) findViewById(R.id.listView3);

ArrayList<HashMap<String, String>> listItem1 = new ArrayList<HashMap<String, String>>();

HashMap<String, String> map1;

map1 = new HashMap<String, String>();

map1.put("titre", "4 - Nombres complexes >");

listItem1.add(map1);

map1 = new HashMap<String, String>();

map1.put("titre", "5 - Probalités >");

listItem1.add(map1);

map1 = new HashMap<String, String>();

map1.put("titre", "6 - Etude de fonction >");

listItem.add(map);

SimpleAdapter mSchedule1 = new SimpleAdapter (this.getBaseContext(), listItem, R.layout.afichageitem,

new String[] {"titre" }, new int[] { R.id.titre});

maListViewPerso3.setAdapter(mSchedule1);

maListViewPerso4 = (ListView) findViewById(R.id.listView4);

ArrayList<HashMap<String, String>> listItem3 = new ArrayList<HashMap<String, String>>();

HashMap<String, String> map2;

map2 = new HashMap<String, String>();

map2.put("titre", "7 - Nombres complexes >");

listItem1.add(map2);

map2 = new HashMap<String, String>();

map2.put("titre", "8 - Probalités >");

listItem1.add(map1);

map2 = new HashMap<String, String>();

map2.put("titre", "9 - Etude de fonction >");

listItem1.add(map);

SimpleAdapter mSchedule11 = new SimpleAdapter (this.getBaseContext(), listItem, R.layout.afichageitem,

new String[] {"titre" }, new int[] { R.id.titre});

maListViewPerso4.setAdapter(mSchedule11);

}

;

}

onglet2 :

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/linearLayoutOnglet2"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

<TextView

android:id="@+id/textView1"

android:layout_width="fill_parent"

android:layout_height="40dp"

android:gravity="center"

android:text="ANNALES"

android:textSize="35px"

android:textStyle="bold" />

<TextView

android:id="@+id/textView2"

android:layout_width="fill_parent"

android:layout_height="31dp"

android:text="" />

<TextView

android:id="@+id/textView3"

android:layout_width="fill_parent"

android:layout_height="40dp"

android:paddingLeft="10px"

android:text="01 - France Sept 2011 Electronique"

android:textSize="25px"

android:textStyle="bold" />

<ListView

android:id="@+id/listView2"

android:layout_width="fill_parent"

android:layout_height="wrap_content" >

<!-- Preview: listitem=@android:layout/simple_list_item_1 -->

</ListView>

<TextView

android:id="@+id/textView4"

android:layout_width="fill_parent"

android:layout_height="10dp"

android:text="" />

<TextView

android:id="@+id/textView5"

android:layout_width="fill_parent"

android:layout_height="40dp"

android:text="02 - France Sept 2011 Mécanique"

android:textSize="25px"

android:textStyle="bold"

android:paddingLeft="10px" />

<ListView

android:id="@+id/listView3"

android:layout_width="fill_parent"

android:layout_height="wrap_content" >

<!-- Preview: listitem=@android:layout/simple_list_item_1 -->

</ListView

>

<TextView

android:id="@+id/textView6"

android:layout_width="fill_parent"

android:layout_height="10dp"

android:text="" />

<TextView

android:id="@+id/textView7"

android:layout_width="fill_parent"

android:layout_height="40dp"

android:text="02 - France Sept 2011 Mécanique"

android:textSize="25px"

android:textStyle="bold"

android:paddingLeft="10px" />

<ListView

android:id="@+id/listView4"

android:layout_width="fill_parent"

android:layout_height="wrap_content" >

<!-- Preview: listitem=@android:layout/simple_list_item_1 -->

</ListView

>

</LinearLayout>

Une autre question rapide ( cela m'evite d'ouvir un autre post ) je n'arrive pas à changer la couleur de mon texte dans la listView j'aimerai que mes Item ( Nombres complexe , proba , étude de fonction ... ) soient ecrites en noir .

Merci d'avance et bonne journée ;)

Lien vers le commentaire
Partager sur d’autres sites

Pour l'instant c'est le seul onglet aussi "long"

J'ai trouvé une manière pour pas que mon contenu dépasse mais bon sa fait un peu bricolage : j'ai fait ça dans onglet2.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:id="@+id/linearLayoutOnglet2"

android:layout_width="fill_parent"

android:layout_height="410dp"

android:orientation="vertical"

Sinon voila mon main :

<?xml version="1.0" encoding="utf-8"?>
<TabHost
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@android:id/tabhost"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/back">
<RelativeLayout
	android:layout_height="fill_parent"
	android:layout_width="fill_parent">
	<TabWidget
		android:id="@android:id/tabs"
		android:layout_alignParentBottom="true"
		android:layout_width="fill_parent"
		android:layout_height="wrap_content" />
	<FrameLayout
		android:id="@android:id/tabcontent"
		android:layout_width="fill_parent"
		android:layout_height="fill_parent"
		android:padding="5dp" />

 </RelativeLayout>


</TabHost>

Une autre question , j'aimerai que mon onglet 2 soit Scrollable après mon textview "ANNALES" jusqu'à la fin voilà ce que j'ai fait :

<?xml version="1.0" encoding="utf-8"?>

<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="410dp"
android:layout_width="fill_parent">



<LinearLayout
android:id="@+id/linearLayoutOnglet2"
android:layout_width="fill_parent"
android:layout_height="410dp"
android:isScrollContainer="false"
android:orientation="vertical" >

<TextView
	android:id="@+id/textView1"
	android:layout_width="fill_parent"
	android:layout_height="40dp"
	android:gravity="center"
	android:text="ANNALES"
	android:textSize="35px"
	android:textStyle="bold" />

<TextView
	android:id="@+id/textView2"
	android:layout_width="fill_parent"
	android:layout_height="31dp"
	android:text="" />

<TextView
	android:id="@+id/textView3"
	android:layout_width="fill_parent"
	android:layout_height="40dp"
	android:paddingLeft="10px"
	android:text="01 - France Sept 2011 Electronique"
	android:textColor="#046380"
	android:textSize="25px"
	android:textStyle="bold" />



<ListView
	android:id="@+id/listView2"
	android:layout_width="wrap_content"
	android:layout_height="150dp"
	android:layout_weight="1.50"
	android.textColor="#046380" >

	<!-- Preview: listitem=@android:layout/simple_list_item_1 -->

</ListView>

<TextView
	android:id="@+id/textView4"
	android:layout_width="fill_parent"
	android:layout_height="10dp"
	android:text="" />

<TextView
	android:id="@+id/textView5"
	android:layout_width="fill_parent"
	android:layout_height="40dp"
	android:paddingLeft="10px"
	android:text="02 - France Sept 2011 Mécanique"
	android:textColor="#046380"
	android:textSize="25px"
	android:textStyle="bold" />

<ListView
	android:id="@+id/listView3"
	android:layout_width="wrap_content"
	android:layout_height="150dp"
	android:layout_weight="1.50" >

	<!-- Preview: listitem=@android:layout/simple_list_item_1 -->
</ListView>

<TextView
	android:id="@+id/textView6"
	android:layout_width="fill_parent"
	android:layout_height="10dp"
	android:text="" />

<TextView
	android:id="@+id/textView7"
	android:layout_width="fill_parent"
	android:layout_height="40dp"
	android:paddingLeft="10px"
	android:text="03 - France Sept 2011 Matériaux"
	android:textColor="#046380"
	android:textSize="25px"
	android:textStyle="bold" />

<ListView
	android:id="@+id/listView4"
   android:layout_width="wrap_content"
	android:layout_height="150dp"
	android:layout_weight="1.50" >

	<!-- Preview: listitem=@android:layout/simple_list_item_1 -->
</ListView>
</LinearLayout>

</ScrollView>


Mais le problème est que je voudrais que le ScrollView agisse APRÈS Le texview "ANNALES" car j'aimerai que mon TextView "ANNALES" restefixe en tête et donc ne puisse pas bouger.

Merci

Modifié par gogui63
Lien vers le commentaire
Partager sur d’autres sites

Dans ton main.xml, il faut que tu rajoutes un android:layout_above="@android:id/tabs" sur le FrameLayout, pour le forcer à s'aligner sur le haut des tabs

<?xml version="1.0" encoding="utf-8"?>
<TabHost
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@android:id/tabhost"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
       android:background="@drawable/back">
	<RelativeLayout
			android:layout_height="fill_parent"
			android:layout_width="fill_parent">
			<TabWidget
					android:id="@android:id/tabs"
					android:layout_alignParentBottom="true"
					android:layout_width="fill_parent"
					android:layout_height="wrap_content" />
			<FrameLayout
					android:id="@android:id/tabcontent"
					android:layout_width="fill_parent"
					android:layout_height="fill_parent"
					android:layout_above="@android:id/tabs"
					android:padding="5dp" />

	 </RelativeLayout>


</TabHost>

Pour le scrollView, tu le mets après ton TextView, et comme un ScrollView ne peut avoir qu'un seul élément, tu encapsules tous les éléments dans un (Linear)Layout

Modifié par chpil
Lien vers le commentaire
Partager sur d’autres sites

Merci chpil mais je ne comprends pas ce que tu veux dire par : Dans ton main.xml, il faut que tu rajoutes un android:layout_above="@android:id/tabs" sur le FrameLayout, pour le forcer à s'aligner sur le haut des tabs

Je n'ai pas de Framelayout ...

Par contre pour le scrollview lorsque je met mon textView avant j'ai cette erreur je ne comprends pas pourquoi :

<?xml version="1.0" encoding="utf-8"?>
   <TextView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/textView1"
    android:layout_width="fill_parent"
    android:layout_height="40dp"
    android:gravity="center"
    android:text="ANNALES"
    android:textSize="35px"
    android:textStyle="bold" />

<ScrollView 
   android:layout_height="410dp"
   android:layout_width="fill_parent">


<LinearLayout
   android:id="@+id/linearLayoutOnglet2"
   android:layout_width="fill_parent"
   android:layout_height="410dp"
   android:isScrollContainer="false"
   android:orientation="vertical" >

   <TextView
    android:id="@+id/textView2"
    android:layout_width="fill_parent"
    android:layout_height="31dp"
    android:text="" />
   <TextView
    android:id="@+id/textView3"
    android:layout_width="fill_parent"
    android:layout_height="40dp"
    android:paddingLeft="10px"
    android:text="01 - France Sept 2011 Electronique"
    android:textColor="#046380"
    android:textSize="25px"
    android:textStyle="bold" />
   <ListView
    android:id="@+id/listView2"
    android:layout_width="wrap_content"
    android:layout_height="150dp"
    android:layout_weight="1.50"
    android.textColor="#046380" >
    <!-- Preview: listitem=@android:layout/simple_list_item_1 -->
   </ListView>
   <TextView
    android:id="@+id/textView4"
    android:layout_width="fill_parent"
    android:layout_height="10dp"
    android:text="" />
   <TextView
    android:id="@+id/textView5"
    android:layout_width="fill_parent"
    android:layout_height="40dp"
    android:paddingLeft="10px"
    android:text="02 - France Sept 2011 Mécanique"
    android:textColor="#046380"
    android:textSize="25px"
    android:textStyle="bold" />
   <ListView
    android:id="@+id/listView3"
    android:layout_width="wrap_content"
    android:layout_height="150dp"
    android:layout_weight="1.50" >
    <!-- Preview: listitem=@android:layout/simple_list_item_1 -->
   </ListView>
   <TextView
    android:id="@+id/textView6"
    android:layout_width="fill_parent"
    android:layout_height="10dp"
    android:text="" />
   <TextView
    android:id="@+id/textView7"
    android:layout_width="fill_parent"
    android:layout_height="40dp"
    android:paddingLeft="10px"
    android:text="03 - France Sept 2011 Matériaux"
    android:textColor="#046380"
    android:textSize="25px"
    android:textStyle="bold" />
   <ListView
    android:id="@+id/listView4"
   android:layout_width="wrap_content"
    android:layout_height="150dp"
    android:layout_weight="1.50" >
    <!-- Preview: listitem=@android:layout/simple_list_item_1 -->
   </ListView>
</LinearLayout>

</ScrollView>

J'ai des erreur tel que :

error: Error parsing XML: not well-formed (invalid token) a la ligne 3 eme ligne

Et "the markup in the document following the root element must be well-formed" lorsque je commence mon ScrollView

Je n'arrive pas y résoudre ..

Lien vers le commentaire
Partager sur d’autres sites

Si, tu as un FrameLayout dans ton main.xml. Regarde bien

De toute façon, il te suffit de recopier le contenu que j'indiquais deux posts plus haut...

Pour le layout onglet2, avec un ScrollView, je te disais de rajouter un LinearLayout pour les éléments que tu veux faire gérer par le ScrollView, pas de déplacer le LinearLayout existant...


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:id="@+id/linearLayoutOnglet2"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   android:orientation="vertical" >

   <TextView
       android:id="@+id/textView1"
       android:layout_width="fill_parent"
       android:layout_height="40dp"
       android:gravity="center"
       android:text="ANNALES"
       android:textSize="35px"
       android:textStyle="bold" />

   <ScrollView
       android:id="@+id/scrollView1"
       android:layout_width="match_parent"
       android:layout_height="wrap_content" >

       <LinearLayout
           android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:orientation="vertical" >

           <TextView
               android:id="@+id/textView2"
               android:layout_width="fill_parent"
               android:layout_height="31dp" />

           <TextView
               android:id="@+id/textView3"
               android:layout_width="fill_parent"
               android:layout_height="40dp"
               android:paddingLeft="10px"
               android:text="01 - France Sept 2011 Electronique"
               android:textSize="25px"
               android:textStyle="bold" />

           <ListView
               android:id="@+id/listView2"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:layout_weight="1" >
           </ListView>

           <TextView
               android:id="@+id/textView4"
               android:layout_width="fill_parent"
               android:layout_height="10dp" />

           <TextView
               android:id="@+id/textView5"
               android:layout_width="fill_parent"
               android:layout_height="40dp"
               android:paddingLeft="10px"
               android:text="02 - France Sept 2011 Mécanique"
               android:textSize="25px"
               android:textStyle="bold" />

           <ListView
               android:id="@+id/listView3"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:layout_weight="1" >
           </ListView>

           <TextView
               android:id="@+id/textView6"
               android:layout_width="fill_parent"
               android:layout_height="10dp" />

           <TextView
               android:id="@+id/textView7"
               android:layout_width="fill_parent"
               android:layout_height="40dp"
               android:paddingLeft="10px"
               android:text="02 - France Sept 2011 Mécanique"
               android:textSize="25px"
               android:textStyle="bold" />

           <ListView
               android:id="@+id/listView4"
               android:layout_width="fill_parent"
               android:layout_height="wrap_content"
               android:layout_weight="1" >
           </ListView>
       </LinearLayout>
   </ScrollView>

</LinearLayout>

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Il te suffit de changer la définition du TextView qui est défini dans le layout utilisé pour chacun des items (affichageitem, à priori dans ton cas). Tu peux utiliser l'attribut android:textColor par ex.

Lien vers le commentaire
Partager sur d’autres sites

J'avais déjà essayé mais j'ai un avertissement et du coup aucun changement de couleur lorsque je rajoute

android.textColor="#010101"

j'ai cet avertissement : attribute is missing the android namespace prefix

Voila mon affichageItem :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="horizontal"
   android:layout_width="fill_parent"
   android:layout_height="wrap_content"
   >



<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="65px"
 android:layout_gravity="center_vertical"
 android:paddingLeft="10px"
 android:layout_weight="10"

   >

 <TextView android:id="@+id/titre"
	  android:layout_width="wrap_content"
	  android:layout_height="fill_parent"
	  android:textSize="30px"
	  android:textStyle="bold"
	  android.textColor="#010101"

	  />

   </LinearLayout>

</LinearLayout>

Lien vers le commentaire
Partager sur d’autres sites

android:textColor (avec un ':'), pas android.textColor

Et petite remarque en passant sur ton layout:

- tu n'as pas besoin de mettre deux LinearLayout imbriqué, le second ne sert à rien et tu peux les regrouper

- il n'est pas conseillé du tout d'utiliser des px (pixels) comme unités pour les dimensions, il est préférable d'utiliser des dp (device independant pixels), qui assurent d'avoir un rendu homogène quelque soit le device)

Lien vers le commentaire
Partager sur d’autres sites

Oui c'est ce que j'ai vue j'ai un Galaxy S2 et une tablette Xoom j'ai voulu essayer sur la tablette et tout était décalé ! Il faut absolument que je fasse quelque chose de plus propre c'est prévu , en tout cas merci beaucoup pour ton aide !

J'en profite au passage pour demander si c'est possible de faire un background composé de plusieurs images ?

Je m'explique comme le montre les screens plus haut , mon background est composé d'un fond beige et le haut et le bas de bandes plus foncées sauf que quand je passe mon device en mode paysage , le titre des onglets (en haut) " COURS; ANNALES; THÈMES ..."dépassent des bandes idem pour mes onglets ... Je voudrait donc adapté mon background aux divers types d’écrans.

Modifié par gogui63
Lien vers le commentaire
Partager sur d’autres sites

J'aimerai aussi si possible centrer mes item dans ma listview car il sont décalés vers le haut et ce n'est pas tres beau voir screen

screenshotors.png

Mon affichageitem.xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="horizontal"
   android:layout_width="wrap_content"
   android:layout_height="40dp"

   >


 <RelativeLayout

 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_gravity="right"

 >
	   <ImageView
 android:id="@+id/fleche"
 android:layout_width="wrap_content"
 android:layout_height="wrap_content"
 android:layout_alignParentRight="true"

/>





 <TextView android:id="@+id/titre"
	  android:layout_width="wrap_content"
	  android:layout_height="fill_parent"
	  android:textSize="15dp"
	  android:textStyle="bold"
	  android:textColor="#010101"
	  android:layout_gravity="bottom"



	  />



   </RelativeLayout>

</LinearLayout>

Modifié par gogui63
Lien vers le commentaire
Partager sur d’autres sites

Pour ton fond d'écran, ton problème vient du fait que Android essaye d'adapter l'image à la résolution de l'écran; du coup, une image qui "passait" bien en portrait va être étirée en largeur et écrasée en hauteur pour passer en paysage. Découper l'image en plusieurs ne changerait pas grand chose aux problème. Par contre, tu as le mécanisme des 9-patch, qui permet d'indiquer dans une image quelles sont les zonez déformables et quelles sont celles qu'il ne faut pas déformer; et Android s'appuira sur ces infos pour rendre l'image de la meilleure façon possible: quelques explications, et l'outil qui permet de gérer ces 9-patch

Pour le centrage du texte de tes éléments, tu peux simplifier ton Layout

- un RelativeLayout racine, avec une 'margin', pour jouer sur la marge autour des éléments constituants le Layout

- un TextView et ImageView centré verticalement avec layout_centerVertival

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:layout_margin="5dp" >

   <ImageView
    android:id="@+id/fleche"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:layout_centerVertical="true" />

   <TextView
    android:id="@+id/titre"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerVertical="true"
    android:textColor="#010101"
    android:textSize="15dp"
    android:textStyle="bold" />

</RelativeLayout>

  • Like 1
Lien vers le commentaire
Partager sur d’autres sites

Rejoignez la conversation

Vous pouvez poster maintenant et vous enregistrez plus tard. Si vous avez un compte, connectez-vous maintenant pour poster.

Invité
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...