2 Stimmen

Größenänderung/Verkleinerung von Android-Widgets (DatePicker und TimePicker)

Ich bin mir nicht sicher, ob dies möglich ist, und ich konnte kein Thema dazu finden, aber wenn es bereits beantwortet wurde, schicken Sie mir einen Link und das war's.

Was ich gerade tun möchte, ist die Größe einiger der Standard-Android-Widgets, insbesondere DatePicker und TimePicker, für die Verwendung in einer Aktivität anzupassen. Aber soweit ich sehen kann, das einzige Ergebnis der Änderung der Breite oder Höhe von entweder Picker (in eine negative Richtung) führt zu einer beschnittenen Ansicht, anstatt eine skalierte/gestreckte Ansicht des Widgets.

Ich bin offen für meine eigenen benutzerdefinierten Widgets, aber ich würde es wirklich vorziehen, dieses Projekt so einfach und sauber wie möglich zu halten, passend zu den Android OS UI so viel wie möglich, so dass die Verwendung der nativen DatePicker und TimePicker scheint wie eine logische Wahl zu mir. Wenn jemand weiß, wie man diese Widgets zu skalieren, anstatt sie zu beschneiden, würde ich es wirklich zu schätzen wissen.

Merci.

5voto

Impression Punkte 727

Es ist ein sehr schlechter Hack, aber er sollte funktionieren: Erstellen Sie eine neue Ansicht, die LinearLayout Methode zum Überschreiben getChildStaticTransformation y setStaticTransformationsEnabled ausdrücklich zu true .

In der Methode getChildStaticTransformation können Sie den Parameter tranformation manipulieren, um den gesamten Inhalt Ihres erweiterten LinearLayouts zu verkleinern.

Und dann fügen Sie die DatePicker oder etwas anderes als ein Kind dieser Ansicht.

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;
}

}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X