Android setX() und Sethos() verhält sich komisch
Ich versuche, dynamisch zu erstellen und dann verschieben eines Bildes in ein Android-Aktivität. Jedoch, der setX() und Sethos () - Methoden scheinen nicht mehr richtig funktionieren. Richtig setzt die position des Bildes, wenn es zum ersten mal erstellt und platziert, aber jeder Versuch, aktualisieren Sie die Ergebnisse in das Bild platziert wird, an der falschen Stelle. Zum Beispiel bewegt sich das Bild auf dem folgenden code:
ImageView image;
RelativeLayout layout = (RelativeLayout)findViewById(R.id.activity_this);
if(action == MotionEvent.ACTION_DOWN){
image = new ImageView(MyClass.this);
layout.addView(image, width, height);
image.setX(206);
image.setY(206);
}
else if(action == MotionEvent.ACTION_MOVE){
if(image != null){
image.setX(206);
image.setY(206);
}
}
Auf ACTION_MOVE das Bild bewegt wird, obwohl die x-und y-Werte der position bleibt die gleiche. Das übergeordnete Bild bleibt das gleiche. Die Größe bleibt die gleiche. Wenn ich die x-und y-Werte es wird immer noch sagen, 206, aber es ist nicht gestellt (206, 206) auf die Aktivität mehr. Ich bin verloren, warum dies geschieht. Ich kann nicht finden, ein Hinweis darauf, dass das Bild verändert wurde, außer es physisch zu verändern Lage.
InformationsquelleAutor user2423199 | 2013-05-28
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wirklich, das sollte nicht passieren. Alternativ, versuchen Sie eine andere variable und der Einstellung der x-und y oder x und erhalten Sie y ein, und fügen Sie eine 0, auf jeden von Ihnen zum selben Ort.
Wie gesagt in Android - Nutzung anzeigen.setX() und Sethos in api 8, wenn Sie gesucht haben, gibt es eine andere Lösung, die funktioniert auch noch bevor-api-8.
LayoutParams
wie das funktioniert -Gibt es mehr Informationen gibt. Ich hoffe, das hilft
Könnte es sein, Dichte? Bei der Einstellung zahlen programmatisch, sollten Sie vermehren sich durch getResources().getDisplayMetrics().Dichte ändern der px-Werte zu dp-Werte
InformationsquelleAutor hyperum
Laufen in das gleiche Problem.
View.setLeft(int)/View.setTop(int)
für mich gearbeitet.Beachten Sie, dass seit dem ursprünglichen post von dieser Antwort, die die Dinge verändert und auf den neueren android-Versionen kann es zu unerwarteten Ergebnissen führen, während es hat den trick für mich auf ältere Versionen. Also, wenn Sie auf älteren Geräten (android 3.0 und unten) dies kann helfen, aber für eine generische Lösung bitte berücksichtigen Sie auch andere Antworten hier auch.
nach unten Stimmen? Ich glaube, Sie sollten das gleiche tun für jede Antwort, die nicht für Sie arbeiten. Aber im Allgemeinen mehr verschiedene Antworten gibt, die höhere Chancen, sparen Sie Ihre Zeit, ein problem zu lösen mit Hilfe von anderen, da ähnliches problem kann tatsächlich verschiedene Lösungen und man kann für Sie arbeiten. Oder auch nicht. Halten Sie einfach das Graben in diesem Fall. So habe ich tatsächlich sehe keinen praktischen Grund, warum nach unten Stimmen zu Antworten, wenn es nicht für Ihren speziellen Fall, da es immer noch hilfreich sein können für andere. Ermutigen, zu teilen, verschiedene Lösungen von bis-voting, was für Sie gearbeitet und nicht Umgekehrt
InformationsquelleAutor vir us
Ist Ihre Tätigkeit in den Vollbildmodus? Wenn Nein, versuchen Sie es in den Vollbildmodus und es sollte dein problem lösen.
InformationsquelleAutor lsping8
Ziemlich spät zu Antworten, aber wenn jemand anderes vor dem gleichen problem. Diese Feste für mich war es die Polster in der layout-Datei:
InformationsquelleAutor Heke Kyn
Als jemand, der tatsächlich vor diesem problem habe ich lösen dieses Problem, indem Sie jede Polsterung in den parentView. Die Polsterung scheinen verursachen eine Veränderung in der layout-Größe
InformationsquelleAutor Min Uswachoke