2010-09-12 4 views
12

Je veux afficher une table avec des champs étant modifiable - voir cet exemple:Android: Comment changer la taille des textes dans un champ EditText?

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:paddingLeft="1dip" 
android:paddingRight="1dip" 
android:paddingBottom="1dip" 
android:background="#F00" 
> 
<ScrollView 
    android:id="@+id/ScrollView01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:scrollbars="vertical" 
    > 
    <HorizontalScrollView 
    android:id="@+id/HorizontalScrollView01" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:scrollbars="horizontal" 
    > 
    <TableLayout 
    android:id="@+id/ItemPane" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:background="#EEE" 
    > 
    <TableRow 
    android:id="@+id/DataRow" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content"  
    android:background="#888" 
    android:layout_margin="0dp" 
    android:gravity="left" 
    > 
    <TextView 
     android:id="@+id/NameField" 
     android:text="Fieldname" 
     android:background="#EEE" 
     android:textSize="14dp" 
     android:layout_margin="1dp" 
     android:layout_marginBottom="0dp" 
     android:paddingLeft="3dp" 
     android:paddingRight="3dp" 
    /> 
    <EditText 
     android:id="@+id/DataField" 
     android:text="some field" 
     android:background="#EEE" 
     android:textSize="14dp" 
     android:layout_margin="1dp" 
     android:layout_marginBottom="0dp" 
     android:paddingLeft="3dp" 
     android:paddingRight="3dp" 
     android:singleLine="true" 
    /> 
    <EditText 
     android:id="@+id/DataField2" 
     android:text="some longish field content..." 
     android:background="#EEE" 
     android:textSize="14dp" 
     android:layout_margin="1dp" 
     android:layout_marginBottom="0dp" 
     android:paddingLeft="3dp" 
     android:paddingRight="3dp" 
     android:singleLine="true" 
    /> 
    </TableRow> 
    </TableLayout> 
    </HorizontalScrollView> 
</ScrollView> 
</LinearLayout> 

Pourquoi l'attribut textSize ignoré dans EditText champs? Comment puis-je rendre le texte dans ces champs plus petit, afin que TOUTES les cellules aient la même taille de police? Pourquoi Android n'honore-t-il pas cet attribut, même s'il est explicitement défini?

Michael

+0

je peux me tromper, mais je crois que vous êtes censé utiliser « 14px » au lieu de « 14dp » pour l'androïde: élément textSize – mtmurdock

+0

@mtmurdock, les unités peuvent être spécifiées en px (pixels), dp (pixels indépendants de la densité), sp (pixels mis à l'échelle en fonction de la taille de police préférée), en (pouces) et mm (millimètres). (Source: http://developer.android.com/reference/android/widget/TextView.html#attr_android:textSize) – Brian

+0

"px" doit être évité à tout prix, pour des raisons de compatibilité avec divers périphériques DPI. – warbi

Répondre

7

Try 'dip' au lieu de 'dp' pour les biens textSize. Je ne sais pas pourquoi, mais parfois utiliser 'dp' n'a aucun effet, même si la documentation dit que ces deux sont égaux. Donc j'utilise toujours 'dip'.

+0

Je suis d'accord ............. dp et px ne se montrent pas parfois – viv

+0

Cette réponse est correcte, cela a fonctionné pour moi – znat

+0

comment se fait TAILLE DU TEXTE est mesurée en "dp" ou "dip", comme autant que je crois qu'il devrait être spécifié avec "sp" – candy

15

Je pense que vous devriez utiliser sp au lieu de dp. android: textSize = "20SP"

+0

+1 cela a fonctionné pour moi. –

+0

incorrect, dp i unités fixes, sp est affecté par les paramètres de l'utilisateur - sous accessibilité (pour les personnes ayant des problèmes de vision) – Wops

1

Effectuez les actions suivantes dans votre main_Activity.java

final Button btpls=(Button) findViewById(R.id.btpls); 

btpls.setOnClickListener(new OnClickListener(){ 
    public void onClick(View t){ 
     float i=textfield.getTextSize(); 
     textfield.setTextSize(i+1) ; 
    } 
}); 

final Button btmins=(Button) findViewById(R.id.btmins); 

btmins.setOnClickListener(new OnClickListener(){ 
    public void onClick(View t){ 
     float n=textfield.getTextSize(); 
     textfield.setTextSize(n-1); 
    } 
}); 
0

système stupide ne me laisse pas downvote ou un commentaire.

sp est également indépendant de la densité. La différence entre sp et dp est que sp est mis à l'échelle en fonction des préférences de taille de police de l'utilisateur. Cela signifie que toutes les polices et tous les éléments de l'interface utilisateur devant être mis à l'échelle avec la taille de la police doivent être définis en unités sp. Seuls les éléments qui ne doivent pas être mis à l'échelle avec la taille de la police doivent être effectués en unités dp.

0

Dans votre styles.xml

<style name="HintTextSize" parent="TextAppearance.Design.Hint"> 
     <item name="android:textSize">16sp</item> 
     <item name="android:paddingLeft">16sp</item> 
    </style> 

<android.support.design.widget.TextInputLayout 
    android:id="@+id/trailer_one_text_input_layout" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    **app:hintTextAppearance="@style/TextLabel" 
    android:layout_marginTop="10dp"> 

     <EditText 
      android:id="@+id/edit_text_trailer_one" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:hint="@string/trailer_one" 
      android:inputType="text" 
      android:singleLine="true" 
      android:textAppearance="?android:attr/textAppearanceMedium" 
      android:textColor="@color/DrivingDarkGrey"/> 
    </android.support.design.widget.TextInputLayout> 
Questions connexes