Содержимое Viewpager не отображается во фрагменте с использованием ScrollView, но отображается полоса прокрутки

Моя проблема в другом. С приведенными ниже макетами xml я бегло показываю страницы viewpager в действии. В режиме прокрутки проблем нет, а также отображается содержимое. Но когда я использую тот же код во фрагменте в панели навигации, то scroll bar отображается, но содержимое не отображается. Пустая страница показывает.

Я использовал android:fillViewport = "true". но никакого результата. ниже изображение. Я также использовал фиксированную высоту для scrollview. но никакого результата.

Содержимое Viewpager не отображается во фрагменте с использованием ScrollView, но отображается полоса прокрутки

Это основной макет

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

    <android.support.v4.view.ViewPager
        android:id = "@+id/pager"
        android:layout_width = "match_parent"
        android:layout_height = "match_parent">

        <android.support.v4.view.PagerTitleStrip
            android:id = "@+id/pager_title_strip"
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:layout_gravity = "top"
            android:background = "#33b5e5"
            android:textColor = "#fff"
            android:paddingTop = "4dp"
            android:paddingBottom = "4dp" />

    </android.support.v4.view.ViewPager>
</LinearLayout>

Это дочерний макет

<?xml version = "1.0" encoding = "utf-8"?>
<ScrollView
    xmlns:android = "http://schemas.android.com/apk/res/android"
    android:layout_width = "match_parent"
    android:layout_height = "wrap_content"
    android:fillViewport = "true"
    android:clickable = "true"
    android:focusable = "true"
    android:scrollbars = "vertical">
    <LinearLayout
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content">
        <TextView
            android:layout_width = "match_parent"
            android:layout_height = "wrap_content"
            android:id = "@+id/text1"
            android:textSize = "20sp"/>
    </LinearLayout>
</ScrollView>

Это главная джава

public class SwipeNav extends Fragment {
    private MyPagerAdapter myPagerAdapter;
    private ViewPager viewPager;
    @Nullable
    @Override
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.nav_swipe, container, false);
            myPagerAdapter = new MyPagerAdapter(getChildFragmentManager(),getContext());
            viewPager = (ViewPager) rootView.findViewById(R.id.pager);
            viewPager.setAdapter(myPagerAdapter);
            return rootView;
        }
    @Override
    public void onViewCreated(View view, Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
    }
}

Это класс MyPagerAdapter

public class MyPagerAdapter extends FragmentStatePagerAdapter {
    private Context context;

    public MyPagerAdapter(FragmentManager fm, Context context) {
        super(fm);
        this.context= context;
    }

    @Override
    public Fragment getItem(int i) {
        ArrayList<String> listItem = new ArrayList<String>();
        SQLiteDatabase sqLiteDatabase = SqliteDatabase.getInstance(context).getWritableDatabase();
        Cursor cursor = sqLiteDatabase.rawQuery("SELECT NAME FROM ARATRIKA", new String[]{});
        if (cursor.getCount() == 0) {
        } else {
            while (cursor.moveToNext()) {
                listItem.add(cursor.getString(0));
            }
        }
        Object[] mStringArray = listItem.toArray();
        Fragment fragment = new AFragment();
        Bundle args = new Bundle();
        args.putString(AFragment.ARG_OBJECT, (String)mStringArray[i]);
        fragment.setArguments(args);
        return fragment;
    }
    @Override
    public int getCount() {
        ////
        ArrayList<String> listItem = new ArrayList<>();
        SQLiteDatabase sqLiteDatabase = SqliteDatabase.getInstance(context).getWritableDatabase();
        Cursor cursor = sqLiteDatabase.rawQuery("SELECT NAME FROM ARATRIKA", new String[]{});
        while (cursor.moveToNext()) {
            listItem.add(cursor.getString(cursor.getColumnIndex("NAME")));
        }
       return listItem.size();
    }
    @Override
    public CharSequence getPageTitle(int position) {

        //return tabTitleArray[position];
        return "OBJECT " + (position + 1);
    }
}

Пожалуйста, поделитесь кодом вашего MyPagerAdapter класса

AskNilesh 09.04.2019 07:44

@Nilesh Rathod Я добавил MyPagerAdapter. Пожалуйста, проверьте

achal naskar 09.04.2019 07:53

Вы проверили свой «listitem.size ()», возвращает ли он нуль или правильный счет.

Goutham 09.04.2019 08:03

@Goutham нет проблем с кодом при использовании в действии. Во фрагменте "listitem.size()" отображается правильное количество. не все страницы отображаются пустыми. где данные страницы превышают, то эта конкретная страница становится пустой. другие страницы показывает нормально.

achal naskar 09.04.2019 08:07

Измените свой вопрос, чтобы объяснить точно, в чем проблема. "не все страницы отображаются пустыми." – Какие страницы пусты? Какие нет? «там, где данные страницы превышают, эта конкретная страница становится пустой». – Что вы подразумеваете под «данными страницы»? Превышает что?

Mike M. 09.04.2019 08:12

проверьте onCreateView и onViewCreated. Попробуйте раздуть и вернуть макет фрагмента в onCreateView и инициализировать пользовательский интерфейс в onViewCreated

Amol Gangadhare 09.04.2019 08:18

@Mike M. Там, где нужно scrollView, в этом поле страница становится пустой. где прокрутка не требуется, в этом поле отображаются данные страницы просмотра, которые поступают из базы данных.

achal naskar 09.04.2019 08:18

@Amol G Я применил ваше предложение, но не нашел решения.

achal naskar 09.04.2019 08:32

Итак, отладьте MyPagerAdapter , проверьте getCount и getItem, что они возвращают.

Amol Gangadhare 09.04.2019 08:44
0
9
73
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Моя проблема решена. android:hardwareAccelerated в манифесте было «истинным». Я изменил на «ложь»

<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
        <application android:hardwareAccelerated = "false"/>
 </manifest>

В любом случае спасибо вам всем за помощь в решении проблемы.

Другие вопросы по теме