Android ViewGroup.setScaleX() bewirken, dass die Anzeige abgeschnitten
Benutze ich NineOldAndroids Bibliothek zu skalieren mein custom-layout.
public class MyLayout extends FrameLayout {
//LayoutParams.MATCH_PARENT and all.
...
@Override
public boolean setPositionAndScale(ViewGroup v, PositionAndScale pas, PointInfo pi) {
...
mScale = pas.getScale();
ViewHelper.setScaleX(this, mScale);
ViewHelper.setScaleY(this, mScale);
}
}
Habe ich versucht FrameLayout und AbsoluteLayout. Alle haben den gleichen Effekt.
Wenn mScale < 1.0
Skalierung/Zoomen funktioniert, sondern Teil des Layouts ist abgeschnitten.
mScale = 1.0:
mScale < 1.0:
Skalierung/Zoomen funktioniert aber das layout ist abgeschnitten
Wie kann ich dieses Problem lösen?
Bearbeiten: Das Bild entstand auf ICS. Also ich glaube nicht, dass es NineOldAndroids problem.
- Was erwartest du die Ausgabe Aussehen?
- So etwas wie MapView. Das layout (
MyLayout
) den gesamten Bildschirm ausfüllen und nicht gekürzt wie in der 2. Abb. LayoutParam der MyLayout match_parent gesetzt sind.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Eltern Ihrer Ansicht muss die Eigenschaft
android:clipChildren
deaktiviert (aus layout-Datei oder mitsetClipChildren(false)
).Aber mit dieser Methode bekommt man nicht die touch-events außerhalb der Sicht-clip-Grenzen. Sie können das umgehen, indem Sie Ihnen von Ihrer Aktivität oder schreiben Sie eine benutzerdefinierte
ViewGroup
Eltern.Ich bin mit einem anderen hack scheint zu funktionieren in meinem Fall, der trick ist, halten Ihre eigene Transformationsmatrix. Dann haben Sie, um eine überlastung viel
ViewGroup
's Methode es zu schaffen. Zum Beispiel :Falls jemand in der gleichen situation wie ich.
Ich landete mit diesem Ansatz:
Seit API Level 11, die
View
KlassesetScaleX()
undsetScaleY()
Methoden, die arbeiten wie erwartet, und auch die Skala sub-views des skalierten anzeigen. Also, wenn das wäre eine Möglichkeit für Sie, legen Sie die Bibliothek und mache nurWenn ich verstehe dein problem korrekt, Sie sind das skalieren einer Gruppe ansehen und erwarten, dass die enthaltenen Ansichten skalieren entsprechend. Es funktioniert nicht so: Sie skalieren die anzeigen-Gruppe, und es ändert seine Größe, aber seine Kinder äußerungen nicht.
Nur skalieren alle Untersichten. Auch so, ich bin nicht sicher, dass Texte und Bilder werden automatisch skaliert. Was Sie wollen, ist der zoom, nicht skaliert. Versuchen diese Referenz.
Verwenden ViewGroup.layout. Kann es sein das der einfachste Weg, zu skalieren(&verschieben) ViewGroup.