Intereting Posts
Разделение андроида с пространством, не работающим для этого случая. Зачем? Потоковое видео с Android Отправка строки через Bluetooth с ПК в качестве клиента на мобильный как сервер Автоматическая обработка изменений конфигурации пользовательского интерфейса в Activity и Fragment иногда не работает Использовать атрибут android: padding Сбой приложения для Android (фрагмент и xml onclick) Селектор списка элементов GridView для нескольких элементов, не работающих в Android Android List View установлен по умолчанию без анимации Проверьте, является ли textview эллипсисом в android Динамический запуск в Android? GooglePlayServicesUtil.getErrorDialog имеет значение null Android отправляет множество SMS-сообщений Android – определение цветов путем ссылки на другие определенные цвета Ошибка при вызове приложения Appregistry.runApplication Вращающееся изображение. Анимационный список или анимированный поворот? (Android)

PercentRelativeLayout внутри ScrollView

Я создал макет с помощью ScrollView который имеет PercentRelativeLayout элемент PercentRelativeLayout . Он не работает на Lollipop и более старых устройствах, но отлично работает на устройствах Marshmallow. Проверьте код ниже:

 <ScrollView android:id="@+id/scrollView" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true"> <android.support.percent.PercentRelativeLayout android:id="@+id/scrollContent" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_heightPercent="100%" app:layout_widthPercent="50%"> <TextView android:id="@+id/textView1" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@android:color/holo_red_dark" android:text="kkjknadko" android:textColor="@android:color/black" app:layout_heightPercent="10%" app:layout_widthPercent="50%"/> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textView1" android:text="Abcaad" android:textColor="@android:color/black" app:layout_heightPercent="10%" app:layout_marginTopPercent="10%" app:layout_widthPercent="50%"/> <TextView android:id="@+id/textview3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textview2" android:background="@android:color/holo_red_dark" android:text="Abcd" android:textColor="@android:color/black" app:layout_heightPercent="10%" app:layout_marginTopPercent="10%" app:layout_widthPercent="50%"/> <TextView android:id="@+id/textview4" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textview3" android:text="Abcd" android:textColor="@android:color/black" app:layout_heightPercent="10%" app:layout_marginTopPercent="10%" app:layout_widthPercent="50%"/> <TextView android:id="@+id/textview5" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textview4" android:background="@android:color/holo_red_dark" android:text="Abcd" android:textColor="@android:color/black" app:layout_heightPercent="10%" app:layout_marginTopPercent="10%" app:layout_widthPercent="50%"/> <TextView android:id="@+id/textview6" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textview5" android:text="Abcd" android:textColor="@android:color/black" app:layout_heightPercent="10%" app:layout_marginTopPercent="10%" app:layout_widthPercent="50%"/> <TextView android:id="@+id/textview7" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textview6" android:text="Abcd" android:textColor="@android:color/black" app:layout_heightPercent="10%" app:layout_marginTopPercent="10%" app:layout_widthPercent="50%"/> <TextView android:id="@+id/textview8" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@+id/textview7" android:text="Abcd" android:textColor="@android:color/black" app:layout_heightPercent="10%" app:layout_marginTopPercent="10%" app:layout_widthPercent="50%"/> </android.support.percent.PercentRelativeLayout> </ScrollView> 

А также я android:fillViewport="true" , он ничего не показывает в Lollipop и более старых версиях Android.

К сожалению, процентная компоновка не будет работать с ScrollView до M. Причина этого в том, что они зависят от подсказки размера, которая доставляется на этапе измерения. До M большинство макетов предоставляли подсказку размера 0 при отправке спецификации неопределенной меры.

Вы можете попытаться исправить это, создав свой собственный подкласс ScrollView и переопределив measureChild и measureChildWithMargins (к счастью, оба защищены), чтобы предоставить подсказку размера.

Source – plus.google.com.

Может ли кто-нибудь помочь мне создать пользовательский ScrollView чтобы он работал?

Solutions Collecting From Web of "PercentRelativeLayout внутри ScrollView"

Создайте одно собственное scrollview и установите Measured Height и Width как вы хотите, для примера

CustomScrollView

 public class CustomScrollView extends ScrollView { public CustomScrollView(Context context) { super(context); } public CustomScrollView(Context context, AttributeSet attrs) { super(context, attrs); } public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } @TargetApi(Build.VERSION_CODES.LOLLIPOP) public CustomScrollView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { super(context, attrs, defStyleAttr, defStyleRes); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); int size = 0; int width = getMeasuredWidth(); int height = getMeasuredHeight(); if (width > height) { size = height; } else { size = width; } setMeasuredDimension(size, size); } } 

Используйте customcrollview в своем xml .

  <yourscrollviewclasspath.CustomScrollView // here you have scrollview path like com.yourpackage.folder_where_your_scrollview_lies xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/scrollView" android:layout_width="match_parent" android:layout_height="match_parent" android:fillViewport="true" > </yourscrollviewclasspath.CustomScrollView > 

Введите описание изображения здесь Надеюсь, это поможет.

Вопрос, как я понимаю, это: я хочу, чтобы эти TextViews составляли 50% ширины родительского представления.

Способ, который работает для меня, это:

 <Space android:layout_width="20dp" android:layout_height="20dp" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:id="@+id/space" /> 

Затем сопоставьте View (s) с этим. Либо RelativeLayout, либо TextViews. Вы теряете контроль (если он когда-либо был) над процентом RelativeLayout. Я, как правило, занимаюсь такими вещами, как:

  android:layout_width="wrap_content" android:layout_height="wrap_content" android:textAppearance="?android:attr/textAppearanceMedium" 

Помогает ли это?