Моя проблема в другом. С приведенными ниже макетами xml я бегло показываю страницы viewpager в действии. В режиме прокрутки проблем нет, а также отображается содержимое. Но когда я использую тот же код во фрагменте в панели навигации, то scroll bar
отображается, но содержимое не отображается. Пустая страница показывает.
Я использовал android:fillViewport = "true"
. но никакого результата. ниже изображение. Я также использовал фиксированную высоту для 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);
}
}
@Nilesh Rathod Я добавил MyPagerAdapter. Пожалуйста, проверьте
Вы проверили свой «listitem.size ()», возвращает ли он нуль или правильный счет.
@Goutham нет проблем с кодом при использовании в действии. Во фрагменте "listitem.size()" отображается правильное количество. не все страницы отображаются пустыми. где данные страницы превышают, то эта конкретная страница становится пустой. другие страницы показывает нормально.
Измените свой вопрос, чтобы объяснить точно, в чем проблема. "не все страницы отображаются пустыми." – Какие страницы пусты? Какие нет? «там, где данные страницы превышают, эта конкретная страница становится пустой». – Что вы подразумеваете под «данными страницы»? Превышает что?
проверьте onCreateView
и onViewCreated
. Попробуйте раздуть и вернуть макет фрагмента в onCreateView
и инициализировать пользовательский интерфейс в onViewCreated
@Mike M. Там, где нужно scrollView, в этом поле страница становится пустой. где прокрутка не требуется, в этом поле отображаются данные страницы просмотра, которые поступают из базы данных.
@Amol G Я применил ваше предложение, но не нашел решения.
Итак, отладьте MyPagerAdapter
, проверьте getCount
и getItem
, что они возвращают.
Моя проблема решена. android:hardwareAccelerated в манифесте было «истинным». Я изменил на «ложь»
<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
<application android:hardwareAccelerated = "false"/>
</manifest>
В любом случае спасибо вам всем за помощь в решении проблемы.
Пожалуйста, поделитесь кодом вашего
MyPagerAdapter
класса