2010-11-23 8 views
2

Je ne sais pas si c'est possible, et je ne pouvais pas trouver un sujet basé dessus, mais si on y a répondu avant de me laisser un lien et ce sera cette. Ce que je cherche à faire maintenant est de redimensionner certains des widgets Android par défaut, en particulier DatePicker et TimePicker, à utiliser dans une activité. Mais autant que je peux voir le seul résultat de modifier la largeur ou la hauteur de l'un ou l'autre Picker (dans une direction négative) résulte en une vue recadrée, plutôt qu'une vue mise à l'échelle/étirée du widget. Je suis ouvert à mes propres widgets personnalisés, mais je préfère vraiment garder ce projet aussi simple et propre que possible, en faisant correspondre l'interface utilisateur Android OS autant que possible, donc en utilisant le DatePicker natif et TimePicker semble comme un choix logique pour moi. Si quelqu'un sait comment redimensionner ces widgets plutôt que de les recadrer, je l'apprécierais vraiment.Redimensionner/Réduire les widgets Android (DatePicker et TimePicker)

Merci.

Répondre

5

Il est un hack très mauvais, mais il devrait fonctionner: Créer une nouvelle vue LinearLayout extension, méthode Ecraser getChildStaticTransformation et setStaticTransformationsEnabled explicite à true.

Dans la méthode getChildStaticTransformation, vous pouvez manipuler le paramètre de transformation pour réduire tout le contenu de votre LinearLayout étendu.

Ensuite, ajoutez DatePicker ou autre chose en tant qu'enfant de cette vue.

EG:

public class ZoomView 
    extends LinearLayout 
{ 

private float sf = 1f; 

public ZoomView(final Context context, final AttributeSet attrs) 
{ 
    super(context, attrs); 
    setStaticTransformationsEnabled(true); 
} 

public ZoomView(final Context context) 
{ 
    super(context); 
    setStaticTransformationsEnabled(true); 
} 

public void setScaling(final float sf) 
{ 
    this.sf = sf; 
} 

@Override 
protected boolean getChildStaticTransformation(final View child, final Transformation t) 
{ 
    t.clear(); 
    t.setTransformationType(Transformation.TYPE_MATRIX); 
    final Matrix m = t.getMatrix(); 
    m.setScale(this.sf, this.sf); 
    return true; 
} 

} 
+1

Hmm ... il est tout à fait remarquable qu'une meilleure méthode de faire cela n'existe pas quelque part. Merci beaucoup pour l'aide Impression. Je vais bientôt faire un essai, mais je pense que ce sera l'un des derniers morceaux de code que je vais gérer, après que d'autres choses se seront mieux installées dans l'application. Semble digne de l'attente, haha ​​... –

Questions connexes