2010-07-29 6 views
1

J'écris un app-widget qui affiche des chiffres, chacun avec une étiquette en face de lui.Android problèmes de mise en page AppWidget avec ellipsize

La mise en page ressemble à ceci:

.-----------------------------. 
| Label1  | AAAAAAAAAAA | 
| LongerLabelLabel2 | BBBBBBB | 
| LongLabel3 | CCCCCCCCCC | 
'-----------------------------' 

Il y a une LinearLayout extérieure (verticale), et chaque ligne est une LinearLayout horizontale avec deux TextViews.

Le problème est que les numéros sont ellipsés si la largeur de l'étiquette et le nombre est trop large pour le widget. Je veux que les étiquettes soient ellipsisées.

La situation ci-dessus par exemple, se terminerait comme ça:

.-----------------------------. 
| Label1 |  AAAAAAAAAAA | 
| LongerLabelLabel2 | BBBB... | 
| LongLabel3 | CCCCCCCCCC | 
'-----------------------------' 

au lieu du choix

.---------------------------. 
| Label1  | AAAAAAAAAAA | 
| LongerLabelL... | BBBBBBB | 
| LongLabel3 | CCCCCCCCCC | 
'---------------------------' 

Je ne peux pas pour ma figure de vie comment résoudre ce problème. Toute aide est appréciée.


Ma configuration actuelle est la suivante:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/widget" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:padding="0dip" 
    android:orientation="vertical" 
    style="@style/WidgetBackground"> 


    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:id="@+id/ROW1" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:paddingTop="7dip" 
       android:paddingBottom="0dip" 
       android:paddingRight="10dip" 
       android:paddingLeft="10dip" 
       android:orientation="horizontal"> 
     <TextView android:id="@+id/NAME1" android:singleLine="true" android:layout_width="wrap_content" android:layout_height="wrap_content" android:ellipsize="end" style="@style/Text.account" /> 
     <TextView android:id="@+id/BAL1" android:singleLine="true" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="right" style="@style/Text.balance" /> 
    </LinearLayout> 

... (more similar rows in the outer layout) 

</LinearLayout> 
+0

Avez-vous envisagé d'utiliser l'attribut 'android: ellipsize =" 3 "' dans votre fichier XML (je suppose que oui, mais je préfère demander)? Peut-être que vous pourriez également utiliser 'android: inputType =" textMultiLine "' – Sephy

+0

Pourriez-vous poster votre mise en page? – CommonsWare

+0

@CommonsWare, désolé pour la réponse tardive; Bien sûr! Question mise à jour (Cela me rend toujours fou!) – aioobe

Répondre

2

je soupçonne que votre problème, en partie, est que vous avez android:layout_width="wrap_content" pour votre étiquette. Je ne m'attendrais pas à ce qu'elle soit en ellipse, puisqu'il y a assez de place pour la montrer. Je passerais de LinearLayout à RelativeLayout. Définissez votre "colonne" numérique comme android:layout_alignParentRight="true" et android:layout_width="wrap_content". Définissez votre "colonne" comme android:layout_alignParentLeft="true", android:layout_toLeftOf="..." (où ... est votre colonne de nombre), et android:ellpsize="end". Cela devrait donner au nombre tout l'espace dont il a besoin et contraindre l'étiquette, le forçant à s'isoler.

+0

Ah .. J'ai regardé RelativeLayout mais je ne pouvais pas comprendre comment le faire ... Je vais donner un coup de feu avec vos instructions. Merci! – aioobe

+0

Fonctionne comme un charme! Merci beaucoup!! – aioobe