╔══════════════════════════════════════════════╗ ^
║ ImageView ╔══════════════╗ ║ |
║ ║ ║ ║ |
║ ║ Actual image ║ ║ |
║ ║ ║ ║ |60px height of ImageView
║ ║ ║ ║ |
║ ║ ║ ║ |
║ ╚══════════════╝ ║ |
╚══════════════════════════════════════════════╝
<------------------------------------------------>
90px width of ImageView
Ich habe eine Bildansicht mit einer Standardhöhe und -breite, Bilder werden in DB gespeichert und ich möchte das Bild entsprechend der Höhe der Bildansichtshöhe skalieren. Da ich nicht möchte, dass es Standardwerte gibt, muss ich es auch im Code ändern, wenn ich Höhe und Breite ändere.
Ich versuche, die Höhe und Breite von ImageView abzurufen, aber in beiden Fällen wird 0 an mich zurückgegeben.
int height = ((ImageView) v.findViewById(R.id.img_ItemView)).getHeight();
Dies gibt mir 0 zurück, auch wenn es die Standardhöhe und -breite hat
android:scaleType="centerInside"
?Antworten:
Meine Antwort auf diese Frage könnte Ihnen helfen:
Anschließend können Sie Ihre Bildskalierungsarbeit über die onPreDraw () -Methode hinzufügen.
quelle
Ich habe gerade diese Eigenschaft festgelegt und jetzt kümmert sich Android OS um alles.
Verwenden Sie dies in Ihrer layout.xml, in die Sie Ihre ImageView gepflanzt haben: D.
quelle
Ich konnte Bildbreite und -höhe durch das Zeichnen erhalten;
quelle
Der Grund, warum die Abmessungen der ImageView 0 sind, liegt darin, dass die Ansicht beim Abfragen immer noch nicht die Layout- und Messschritte ausgeführt hat. Sie haben der Ansicht nur mitgeteilt, wie sie sich im Layout "verhalten" würde, aber sie hat immer noch nicht berechnet, wo die einzelnen Ansichten platziert werden sollen.
Wie legen Sie die Größe für die Bildansicht fest? Können Sie nicht einfach eine der nativ implementierten Skalierungsoptionen verwenden?
quelle
Das Posten im UI-Thread funktioniert für mich.
quelle
Ihre XML-Datei:
Ihre Java-Datei:
quelle
Ich denke, Sie können das Android-Betriebssystem dies für Sie erledigen lassen. Stellen Sie den Skalentyp in der ImageView auf ein
fitXY
und das angezeigte Bild wird an die aktuelle Größe der Ansicht angepasst .quelle
Am einfachsten ist es, die Breite und Höhe einer ImageView in der onWindowFocusChanged-Methode der Aktivität abzurufen
quelle
Wenn Sie mehrere Bilder dynamisch erstellt haben, versuchen Sie Folgendes:
// Initialisiere dein Bilder-Array
// programmgesteuert erstellen und zur übergeordneten Ansicht hinzufügen
// Das ist es. Viel Spaß beim Codieren.
quelle
Mein Freund, Sie erhalten keine Bildhöhe, die in db gespeichert ist. Sie erhalten jedoch eine Ansichtshöhe. Um eine Bildhöhe zu erhalten, müssen Sie eine Bitmap aus db, s Bild erstellen. Dann können Sie Höhe und Breite der Bildansicht abrufen
quelle