Просмотр страницы внутри прокрутки во фрагменте Android

У меня есть макет фрагмента Android, я хочу поместить представление своей страницы в представление прокрутки. Когда приложение работает без прокрутки, просматривайте изображение, которое оно показывает, но когда я помещаю код просмотра страницы внутри прокрутки, изображение не отображается.

Вот мой код

<LinearLayout 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"
        tools:context = "com.example.wk.sigah.FragmentHome"
        android:background = "@color/colorPrimary">


        <ScrollView
            android:layout_width = "match_parent"
            android:layout_height = "match_parent">

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

        </ScrollView>

</LinearLayout>

зачем вам scrollview ?. Если вы хотите, чтобы страница прокручивалась, сделайте фрагмент пейджера представления xml с помощью scrollview

Jyoti JK 26.03.2018 12:25

зачем ставить viewpager в scrollview?

Abdul Kawee 26.03.2018 12:26

@JyotiJK Я хочу использовать просмотр моей страницы только для слайдера изображений вверху, а затем помещать текст после этого

Kharisma 26.03.2018 12:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
2
3
155
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Override onMeasure in class and extends ViewPager as follows, this will make it get the height of the biggest child it currently has.

import android.content.Context;
import android.support.v4.view.ViewPager;
import android.util.AttributeSet;
import android.view.View;

public class CustomViewPager extends ViewPager {

public CustomViewPager(Context context) {
    super(context);
}

public CustomViewPager(Context context, AttributeSet attrs){

    super(context, attrs);
}

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {

    super.onMeasure(widthMeasureSpec, heightMeasureSpec);

    int height = 0;
    for(int i = 0; i < getChildCount(); i++) {

        View child = getChildAt(i);

        child.measure(widthMeasureSpec, MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));

        int h = child.getMeasuredHeight();

        if (h > height) height = h;

    }

    heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);

    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
}

В XML:

<android.support.v4.widget.NestedScrollView
    android:layout_width = "match_parent"
    android:layout_height = "match_parent"
    android:fitsSystemWindows = "true"
    android:fillViewport = "true">

   <LinearLayout
            android:layout_width = "match_parent"
            android:layout_height = "match_parent"
            android:orientation = "vertical">

    <com.your.package.name.CustomViewPager
        android:id = "@+id/viewImage"
        android:layout_width = "match_parent"
        android:layout_height = "wrap_content"
        app:layout_behavior = "@string/appbar_scrolling_view_behavior"/>

     <TextView
         android:layout_width = "wrap_content"
         android:layout_height = "wrap_content"
         android:text = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa" />

</LinearLayout>

</android.support.v4.widget.NestedScrollView>

Руководство

мой приложение: layout_behavior отсутствует

Kharisma 26.03.2018 12:45

Там написано проверяет уважение к ресурсам в файлах Android XML

Kharisma 26.03.2018 12:48

@Kharisma В xml вам нужно заменить строку настраиваемого окна просмотра на ваш пакет, а в java вам нужно объявить bby CustomViewPager, а не viewpager. ты сделал это правильно?

Vishva Dave 26.03.2018 12:50

да, когда я ставлю приложение: layout_behavior в вложенный просмотр прокрутки все еще отсутствует

Kharisma 26.03.2018 12:57

@Kharisma удалите это из вложенного прокрутки. и запустите код и дайте мне знать

Vishva Dave 26.03.2018 12:59

Почему этот файл xml. используйте xml, который я дал в ответе. что ты делаешь этого я не могу понять. просто скопируйте и вставьте мой ответ и проверьте один раз. и если какая-либо ошибка, дайте правильный журнал ошибок

Vishva Dave 26.03.2018 13:09

Что вам нужно сделать, так это создать один класс java, назовите его CustomViewPager. затем добавьте мой код ответа в этот класс. Теперь в ваш xml добавьте этот фрагмент кода. И в этом замените имя пакета вашим. это оно. у него нет ошибок, которые я тестировал

Vishva Dave 26.03.2018 13:12

есть ошибка Ошибка: (14) Ошибка синтаксического анализа XML: несвязанный префикс, Ошибка: не удалось выполнить задачу ': app: processDebugResources'. > com.android.ide.common.process.ProcessException: не удалось выполнить aapt, Ошибка: (8) Не найден идентификатор ресурса для атрибута fillViewPort в пакете android

Kharisma 26.03.2018 13:25

@Kharisma Извините за орфографическую ошибку :( измените это на android:fillViewport = "true"

Vishva Dave 26.03.2018 13:27

мой префикс app: layout_behavior = "@ строка / appbar_scrolling_view_behavior" все еще несвязанный, но когда я его удаляю, приложения работают, что насчет этого?

Kharisma 26.03.2018 13:35

@Kharisma Он работает и дает отличный результат по мере необходимости ??

Vishva Dave 26.03.2018 13:38

@Kharisma для приложения xmlns:app = "http://schemas.android.com/apk/res-auto" это пространство имен. в студии Android вы можете нажать Alt + Enter на app:, и вы получите это пространство имен

Vishva Dave 26.03.2018 13:40

да, как я могу проверить правильность работы прокрутки? Можете ли вы помочь мне привести пример, показывающий одно текстовое представление под CustomPageViewer в XML-файле?

Kharisma 26.03.2018 13:57

@Kharisma Рад помочь :) Удачного кодирования :)

Vishva Dave 27.03.2018 06:15

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