ImageView не отображает изображения - PullRequest
0 голосов
/ 20 июня 2019

Я хочу пролистать 3 изображения внутри ImageView, который надувается в ViewPager, когда я запускаю свое приложение, я могу пролистать 3 пустых страницы / изображения, изображение не отображается.Изображения находятся в папке res/drawable.

Я попытался добавить каждую строку кода, предложенную здесь, о переполнении стека, поскольку я просмотрел все сообщения, связанные с этим вопросом (вы увидите их все вкод, который я предоставлю. Я попытался изменить размеры изображений до 300x300, но он все еще не работает. Я попытался поместить изображения в подпапку папки drawable или в папку hdpi, mdpi,xdpi... etc, компиляциювозникает ошибка.

1) XML-файл действия:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.viewpager.widget.ViewPager
        android:id="@+id/viewPager"
        android:layout_width="match_parent"
        android:layout_height="480dp"
        android:visibility="visible"
        tools:visibility="visible"> </androidx.viewpager.widget.ViewPager>


</RelativeLayout>

2) код custom_layout (imageView):

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerInside"
        android:src="@mipmap/ic_launcher" />

</RelativeLayout>

3) весь ViewPagerAdapter:

package com.example.apptest;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;

public class ViewPagerAdapter extends PagerAdapter {

    private Context context;
    private LayoutInflater layoutInflater;
    private Integer[] images = {R.drawable.resized1, R.drawable.resized2, R.drawable.resized3};

    public ViewPagerAdapter(Context context){
        this.context = context;
    }


    @Override
    public int getCount() {
        return images.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return false;
    }

    @Override
    public Object instantiateItem( ViewGroup container, int position) {
        layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View view = layoutInflater.inflate(R.layout.custom_layout, null);
        ImageView imageView =  view.findViewById(R.id.imageView);
        imageView.setImageResource(images[position]);            
        container.addView(view);
        return view;
    }



    @Override
    public void destroyItem( ViewGroup container, int position,  Object object) {
        ViewPager vp = (ViewPager) container;
        View view = (View) object;
        vp.removeView((View)view);

    }

}

4) файл манифеста Android:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.apptest">

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission 
android:name="android.permission.READ_EXTERNAL_STORAGE"/>

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:largeHeap="true"
        android:hardwareAccelerated="false"

        android:theme="@style/AppTheme">
        <activity android:name=".menuSliderActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".MainActivity"></activity>

    </application>

</manifest>

5) Java-код действия:

package com.example.apptest;

import android.app.Activity;
import android.os.Bundle;

import androidx.appcompat.app.AppCompatActivity;
import androidx.viewpager.widget.ViewPager;

public class menuSliderActivity extends AppCompatActivity {

    private ViewPager viewPager;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.menu_slider);

        viewPager = (ViewPager) findViewById(R.id.viewPager);
        ViewPagerAdapter viewPagerAdapter = new ViewPagerAdapter(this);
        viewPager.setAdapter(viewPagerAdapter);

    }

}

Обычно я должен видеть свои изображения и пролистывать их, но вместо этого я не получаю никаких ошибок, и страница пуста.

Ответы [ 3 ]

1 голос
/ 20 июня 2019

это работает у меня отлично

@Override
public boolean isViewFromObject(View view, Object object) {
    return view.equals(object);
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    container.removeView((View)object);
}

вместо этого

 @Override
public boolean isViewFromObject(View view, Object object) {
    return false;
}

@Override
public void destroyItem( ViewGroup container, int position,  Object object) {
    ViewPager vp = (ViewPager) container;
    View view = (View) object;
    vp.removeView((View)view);

}
0 голосов
/ 20 июня 2019

Просто измените это

@Override
public boolean isViewFromObject(@NonNull View view, @NonNull Object o) {
    return view == o;
}
0 голосов
/ 20 июня 2019

Попробуйте сделать этот тест

Заменить wrap_content на match_parent

<ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent" 
        android:layout_height="match_parent"
        android:scaleType="centerInside"
        android:src="@mipmap/ic_launcher" />
...