Dialogo di image di Android / Popup la stessa dimensione dell'image e nessun bordo

Al momento sto lavorando su un browser di file. Tutto funziona bene con un'exception: se l'utente fa clic su un'image (jpg, png, bmp, ..), voglio che l'image venga visualizzata in una window o in un popup che ha la stessa dimensione dell'image – in modo che non ci sono affatto frontiere. I file di image si trovano sulla sdcard.

Ecco quello che ho finora:

  • Tornare all'attività principale dall'attività creata da notifica
  • Modifica dell'orientatore di Android 2.3
  • Come get la lunghezza in millisecondi di video da URL senza visualizzazione video in Android?
  • È ansible visualizzare la barra degli URL in Chrome per Android?
  • Android: Come usare ndk-gdb con un eseguibile nativo puro?
  • Come animare ImageView dalla coltura centrale per riempire lo schermo e viceversa (stile facebook)?
  • BitmapDrawable bitmap = new BitmapDrawable(context.getResources(), TARGET_PATH); AlertDialog.Builder imageDialog = new AlertDialog.Builder(context); LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View layout = inflater.inflate(R.layout.thumbnail, null); ImageView image = (ImageView) layout.findViewById(R.id.thumbnail_IMAGEVIEW); image.setImageDrawable(bitmap); imageDialog.setView(layout); imageDialog.create(); imageDialog.show(); 

    Il file XML:

     <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ImageView android:id="@+id/thumbnail_IMAGEVIEW" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:contentDescription="@string/icon_DESCRIPTION" /> </RelativeLayout> 

    Ecco l'output:

    Uscita difettosa

    Ci sono bordi brutti ai bordi delle immagini – non voglio che essi siano mostrati. Ho provato un sacco di cose e esempi elencati in google, ecc. – niente ha funzionato ancora.

    L'opzione migliore sarà quella di rendere la window di dialogo / vista dietro l'image, la stessa dimensione dell'image. Un altro modo potrebbe essere quello di impostare lo background dietro l'image trasparente.

    Come posso get una soluzione? Mi piacerebbe fare dello background le stesse size dell'image, quindi non c'è nessuna roba "invisibile", ma sarò anche a posto con l'opzione trasparente.


    Soluzione:

     // Get screen size Display display = context.getWindowManager().getDefaultDisplay(); Point size = new Point(); display.getSize(size); int screenWidth = size.x; int screenHeight = size.y; // Get target image size Bitmap bitmap = BitmapFactory.decodeFile(TARGET); int bitmapHeight = bitmap.getHeight(); int bitmapWidth = bitmap.getWidth(); // Scale the image down to fit perfectly into the screen // The value (250 in this case) must be adjusted for phone/tables displays while(bitmapHeight > (screenHeight - 250) || bitmapWidth > (screenWidth - 250)) { bitmapHeight = bitmapHeight / 2; bitmapWidth = bitmapWidth / 2; } // Create resized bitmap image BitmapDrawable resizedBitmap = new BitmapDrawable(context.getResources(), Bitmap.createScaledBitmap(bitmap, bitmapWidth, bitmapHeight, false)); // Create dialog Dialog dialog = new Dialog(context); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.thumbnail); ImageView image = (ImageView) dialog.findViewById(R.id.imageview); // !!! Do here setBackground() instead of setImageDrawable() !!! // image.setBackground(resizedBitmap); // Without this line there is a very small border around the image (1px) // In my opinion it looks much better without it, so the choice is up to you. dialog.getWindow().setBackgroundDrawable(null); // Show the dialog dialog.show(); 

    File XML:

     <?xml version="1.0" encoding="utf-8"?> <ImageView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/imageview" android:layout_width="match_parent" android:layout_height="match_parent" > </ImageView> 

    Output finale:

    Produzione

  • Comunicazione tra emulatori Android
  • Colbind l'applicazione android a Microsoft SQL Server 2008
  • Android: come posso impostare la width e l'altezza di AlertDialog e il button dello stile AlertDialog?
  • Eseguire il debug su due dispositivi separati in Eclipse
  • Input di denaro di Android con decimale fisso
  • Uri restituito dopo ACTION_GET_CONTENT dalla galleria non funziona in setImageURI () di ImageView
  • 4 Solutions collect form web for “Dialogo di image di Android / Popup la stessa dimensione dell'image e nessun bordo”

    è ansible creare una window di dialogo personalizzata per mostrare le immagini, creare un layout per gonfiare nella window setcontentview della window di dialogo, prendere un layout lineare con il contenuto dell'involucro di width e altezza e immaginare con esso la properties; di scala fitxy.

    Utilizzare FrameLayout come genitore piuttosto che RelativeLayout e impostare wrap_content e 0 margini.

    Provare:

     <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity" android:background="@color/background"> <FrameLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/frameLayout" android:background="#b2ff7c"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView" android:src="@drawable/ic_launcher"/> </FrameLayout> </RelativeLayout> 

    Il risultato dovrebbe essere uno background della stessa dimensione di ImageView.

    Se questo funziona. Prova a modificarla in un tema personalizzato:

      <style name="Widget.ImageWell"> <item name="android:background">@android:drawable/panel_picture_frame_background</item> </style> 

    Cambia il tuo ImageView da questo:

     <ImageView android:id="@+id/thumbnail_IMAGEVIEW" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:contentDescription="@string/icon_DESCRIPTION" /> 

    A questa:

     <ImageView android:id="@+id/thumbnail_IMAGEVIEW" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:adjustViewBounds="true" <!-- Here is the thing --> android:contentDescription="@string/icon_DESCRIPTION" /> 

    Spero che questo ti aiuti.

    Hai provato a impostare setType in ImageView?

    <ImageView ... android:scaleType="fitXY" ... />

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.