belongs to Maven artifact androidx.percentlayout:percentlayout:1.0.0-alpha1

PercentRelativeLayout

public class PercentRelativeLayout
extends RelativeLayout

java.lang.Object
   ↳ android.view.View
     ↳ android.view.ViewGroup
       ↳ android.widget.RelativeLayout
         ↳ androidx.percentlayout.widget.PercentRelativeLayout


This class is deprecated.
consider using ConstraintLayout and associated layouts instead. The following shows how to replicate the functionality of percentage layouts with a ConstraintLayout. The Guidelines are used to define each percentage break point, and then a Button view is stretched to fill the gap:

 <androidx.constraintlayout.widget.ConstraintLayout
         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">

     <androidx.constraintlayout.widget.Guideline
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/left_guideline"
         app:layout_constraintGuide_percent=".15"
         android:orientation="vertical"/>

     <androidx.constraintlayout.widget.Guideline
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/right_guideline"
         app:layout_constraintGuide_percent=".85"
         android:orientation="vertical"/>

     <androidx.constraintlayout.widget.Guideline
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/top_guideline"
         app:layout_constraintGuide_percent=".15"
         android:orientation="horizontal"/>

     <androidx.constraintlayout.widget.Guideline
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:id="@+id/bottom_guideline"
         app:layout_constraintGuide_percent=".85"
         android:orientation="horizontal"/>

     <Button
         android:text="Button"
         android:layout_width="0dp"
         android:layout_height="0dp"
         android:id="@+id/button"
         app:layout_constraintLeft_toLeftOf="@+id/left_guideline"
         app:layout_constraintRight_toRightOf="@+id/right_guideline"
         app:layout_constraintTop_toTopOf="@+id/top_guideline"
         app:layout_constraintBottom_toBottomOf="@+id/bottom_guideline" />

 </androidx.constraintlayout.widget.ConstraintLayout>

  

Subclass of RelativeLayout that supports percentage based dimensions and margins. You can specify dimension or a margin of child by using attributes with "Percent" suffix. Follow this example:

 <androidx.percentlayout.widget.PercentRelativeLayout
         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">
     <ImageView
         app:layout_widthPercent="50%"
         app:layout_heightPercent="50%"
         app:layout_marginTopPercent="25%"
         app:layout_marginLeftPercent="25%"/>
 </androidx.percentlayout.widget.PercentRelativeLayout>
 
The attributes that you can use are:
  • layout_widthPercent
  • layout_heightPercent
  • layout_marginPercent
  • layout_marginLeftPercent
  • layout_marginTopPercent
  • layout_marginRightPercent
  • layout_marginBottomPercent
  • layout_marginStartPercent
  • layout_marginEndPercent
  • layout_aspectRatio
It is not necessary to specify layout_width/height if you specify layout_widthPercent. However, if you want the view to be able to take up more space than what percentage value permits, you can add layout_width/height="wrap_content". In that case if the percentage size is too small for the View's content, it will be resized using wrap_content rule.

You can also make one dimension be a fraction of the other by setting only width or height and using layout_aspectRatio for the second one to be calculated automatically. For example, if you would like to achieve 16:9 aspect ratio, you can write:

     android:layout_width="300dp"
     app:layout_aspectRatio="178%"
 
This will make the aspect ratio 16:9 (1.78:1) with the width fixed at 300dp and height adjusted accordingly.

Summary

Nested classes

class PercentRelativeLayout.LayoutParams

This class is deprecated. this class is deprecated along with its parent class.  

Inherited constants

Inherited fields

Public constructors

PercentRelativeLayout(Context context)
PercentRelativeLayout(Context context, AttributeSet attrs)
PercentRelativeLayout(Context context, AttributeSet attrs, int defStyle)

Public methods

PercentRelativeLayout.LayoutParams generateLayoutParams(AttributeSet attrs)

Protected methods

PercentRelativeLayout.LayoutParams generateDefaultLayoutParams()
void onLayout(boolean changed, int left, int top, int right, int bottom)
void onMeasure(int widthMeasureSpec, int heightMeasureSpec)

Inherited methods

Public constructors

PercentRelativeLayout

PercentRelativeLayout (Context context)

Parameters
context Context

PercentRelativeLayout

PercentRelativeLayout (Context context, 
                AttributeSet attrs)

Parameters
context Context

attrs AttributeSet

PercentRelativeLayout

PercentRelativeLayout (Context context, 
                AttributeSet attrs, 
                int defStyle)

Parameters
context Context

attrs AttributeSet

defStyle int

Public methods

generateLayoutParams

PercentRelativeLayout.LayoutParams generateLayoutParams (AttributeSet attrs)

Parameters
attrs AttributeSet

Returns
PercentRelativeLayout.LayoutParams

Protected methods

generateDefaultLayoutParams

PercentRelativeLayout.LayoutParams generateDefaultLayoutParams ()

Returns
PercentRelativeLayout.LayoutParams

onLayout

void onLayout (boolean changed, 
                int left, 
                int top, 
                int right, 
                int bottom)

Parameters
changed boolean

left int

top int

right int

bottom int

onMeasure

void onMeasure (int widthMeasureSpec, 
                int heightMeasureSpec)

Parameters
widthMeasureSpec int

heightMeasureSpec int