3

У меня есть вид изображения внутри вида пейджера для отображения некоторых изображений, поступающих из URL, как показано на скриншоте ниже,Android - вид изображения внутри вида пейджера вопросы

enter image description here Однако изображение должно быть заполнено (должны занимать полное пространство пейджера просмотра). Но то, что происходит в моем случае, - это изображение отображается в центре, даже если я задал параметры макета для заполнения родительского элемента.

моего фрагмент, где я вернуть расположение с точкой зрения изображения:

ImageView image = new ImageView(getActivity()); 

     ImageLoader imgLoader = new ImageLoader(MainActivity.context); 
     imgLoader.DisplayImage(imagePath, new Activity(), image); 

     LinearLayout layout = new LinearLayout(getActivity()); 
     layout.setLayoutParams(new LayoutParams()); 

     layout.setGravity(Gravity.CENTER); 
     layout.addView(image); 

     return layout; 

вида пейджер:

<LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="225dp" 
      android:background="@color/white" 
      android:orientation="vertical" > 

      <android.support.v4.view.ViewPager 
       android:id="@+id/pager" 
       android:layout_width="fill_parent" 
       android:layout_height="0dp" 
       android:layout_weight="1" /> 
     </LinearLayout> 

когда изображение еще загружается из URL я покажу некоторый прогресс как анимация и после загрузки I установит изображение внутри изображения.

if (bitmap != null) { 
       imageView.setBackgroundResource(0); 
       imageView.setImageBitmap(bitmap); 

      } else { 
       imageView.setBackgroundResource(R.drawable.view_pager_progress); 
       final AnimationDrawable startAnimation = (AnimationDrawable) imageView 
         .getBackground(); 
       imageView.setScaleType(ScaleType.CENTER);// i tried FIT_XY, dint work 
       startAnimation.start(); 
      } 

Подводя итог, я хочу, чтобы вообразить e внутри представления пейджер должен заполнить полное пространство внутри пейджера представления как по горизонтали, так и по вертикали. есть идеи как это сделать?

+0

Уважаемый, как вы можете это решить? У меня такая же проблема, но используйте coordinatorlayout с контентом ... – Mateus

ответ

5

Попробуйте установить ScaleType для вас ImageView в CENTER_CROP

imageView.setScaleType(CENTER_CROP) 

Кроме того, возможно, вам нужно добавить несколько макетов Params при добавлении ImageView в LinearLayout

+0

Работа в CENTER_CROP, я даже попробовал настройку параметров макета для изображения. Но не повезло до сих пор. –

+0

Жаль, что вы это слышали. необходимо использовать параметры родительского макета родителя для линейного макета и представления изображения внутри вашего viewpager. Самый простой способ добиться этого - использовать xml layout re источник. Тогда CENTER_CROP может помочь. – httpdispatch

0

Попробуйте использовать:

image.setAdjustViewBounds(true); 
+0

, что dint work :( –

+0

Это вообще что-то изменило? Если нет, убедитесь, что ни одно из полей или полей Views, которые являются родителями или рядом с вашим изображением, мешают с макетом, который вы пытаетесь достичь. Вы также можете попробовать добавить изображениеView вручную и посмотреть, как он выглядит в редакторе. – NoToast

+0

здесь полный код xml для вышеуказанного действия. У вас есть какие-либо проблемы здесь? http: // pastebin .com/7AAMWuvP –

1

@suresh cheemalamudi в вашем вышеприведенном коде вы указали высоту своей линейной компоновки, где находится ваш пейджер. Вместо этого он сопоставит родитель. И код xml должен выглядеть l икэ это ниже

<android.support.v4.view.ViewPager 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/view_pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" /> 

и я ваш Java-код указать этот путь

imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE); 
0

OK. Решением, которое фактически работает, является:

 ImageView imageView = new ImageView(context); 
     imageView.setLayoutParams(new ViewGroup.LayoutParams(mScreenWidth, ViewGroup.LayoutParams.WRAP_CONTENT)); 
     imageView.setAdjustViewBounds(true); 
     imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); 

     Drawable drawable = Drawable.createFromPath(Environment.getExternalStorageDirectory() + "/Android/data/" + getPackageName() + 
       "/"+....+".jpg");   
     if(drawable != null)     
      imageView.setImageDrawable(drawable); 

     ((ViewPager) container).addView(imageView, 0); 


<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/view_pager" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:background="@android:color/black" 
    /> 
+0

Какова ценность вашего mScreenWidth? – dmh

+0

Текущая ширина экрана устройства (зависит от поворота). – Yar

+0

Вы используете этот вариант на своем адаптере страницы правильно? – dmh

Смежные вопросы