In meinem Projekt wählt der Benutzer ein Bild aus der Galerie aus, das dann als Hintergrund für meine benutzerdefinierte Ansicht festgelegt wird. Und ich muss die Größe dieser Ansicht an die Größe des Bildes anpassen.So passen Sie die Größe der Ansicht entsprechend ihrem Inhalt an
In der aktuellen Version ist die Größe meiner benutzerdefinierten Ansicht statisch. Aber ich muss es an die Größe des gewählten Bildes anpassen. Und ich weiß auch nicht, wie ich dieses Bild als Hintergrund einstellen soll, ohne dass es gestreckt wird.
XML-Datei von Fragment
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="9">
<com.example.kreslenie.mapakreslenie.CanvasMap
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:id="@+id/mapping_canvas" />
...
</RelativeLayout>
Fragment Methode, die das Bild lädt und setzt sie dann als Hintergrund
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
try {
if (requestCode == RESULT_LOAD_IMG && resultCode == -1 && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = activity.getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String imgDecodableString = cursor.getString(columnIndex);
cursor.close();
Bitmap bitmap = Bitmap.createBitmap(BitmapFactory.decodeFile(imgDecodableString));
Drawable image = new BitmapDrawable(activity.getResources(), bitmap);
canvas.setBackground(image);
} else {
Toast.makeText(activity, "You haven't picked any Image",
Toast.LENGTH_LONG).show();
}
} catch (Exception e) {
Toast.makeText(activity, "Something went wrong", Toast.LENGTH_LONG)
.show();
}
}
Legen Sie es nicht als Hintergrund fest, legen Sie es als Quelle fest ('src'). So etwas wie 'imageView.setImageDrawable (zeichnbar)' oder 'imageView.setImageBitmap (Bitmap)'. Schließlich, legen Sie Ihre 'Layout-Parameter zu wrap_content' oder, wenn Sie die statische Größe behalten möchten, verwenden Sie' scaleType', um zu verwalten, wie es skaliert wird. – zgc7009
Eigentlich muss ich dieses Bild auf meine benutzerdefinierte Ansicht einstellen. Ich muss meine Frage bearbeiten. – silicoin
Lassen Sie Ihre ImageView einfach erweitern, es sei denn, es gibt einen Grund dafür. – zgc7009