我想按百分比设置边距..我在线性布局中有4个图像视图,并希望设置默认的左,右,上,下边距,每个屏幕尺寸保持相同的百分比。
有可能吗?
这是我想要的演示..
这就是我尝试过但不起作用的
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:weightSum="10" >
<Thumbnail
android:id="@+id/thumb1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4" />
<Thumbnail
android:id="@+id/thumb2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:weightSum="10" >
<Thumbnail
android:id="@+id/thumb3"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4" >
</Thumbnail>
<Thumbnail
android:id="@+id/thumb4"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4" />
</LinearLayout>
</LinearLayout>
感谢您的帮助
答案 0 :(得分:25)
您可以在View
s中将不可见的LinearLayout
作为间隔符,并使用layout_weight
机制为其分配相对大小。
示例:
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1">
<Thumbnail
android:id="@+id/thumb1"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4" />
<View
android:layout_width="0dp"
android:layout_height="0dp"
android:layout_weight="2"
android:visibility="invisible"/>
<Thumbnail
android:id="@+id/thumb2"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="4" />
</LinearLayout>
答案 1 :(得分:19)
于2017年8月1日添加:
此答案中的两个布局现已弃用,但有关于如何使用ConstraintLayout
获得相同功能的说明。感谢dpg指出这一点。
如果您计划将百分比与资源一起使用,this answer可能会有用。
旧回答:
支持库版本23.0.0现在有了更好的方法(关于时间,对吗?)。您现在可以使用PercentFrameLayout或PercentRelativeLayout。它们都具有以下属性:
答案 2 :(得分:5)
您可以使用ConstraintLayout's Guidelines以百分比设置边距。
假设您要为布局定义以下百分比值:
然后,您只需在布局中添加以下指南:
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.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">
<ImageView
android:id="@+id/imageView1"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
app:srcCompat="@drawable/ic_launcher_background"
app:layout_constraintTop_toTopOf="@+id/horGuideline1"
app:layout_constraintStart_toStartOf="@+id/verGuideline1"
app:layout_constraintEnd_toStartOf="@+id/verGuideline2"
app:layout_constraintBottom_toTopOf="@+id/horGuideline2" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
app:srcCompat="@drawable/ic_launcher_background"
app:layout_constraintTop_toTopOf="@+id/horGuideline1"
app:layout_constraintStart_toStartOf="@+id/verGuideline3"
app:layout_constraintEnd_toStartOf="@+id/verGuideline4"
app:layout_constraintBottom_toTopOf="@+id/horGuideline2" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
app:srcCompat="@drawable/ic_launcher_background"
app:layout_constraintTop_toTopOf="@+id/horGuideline3"
app:layout_constraintStart_toStartOf="@+id/verGuideline1"
app:layout_constraintEnd_toStartOf="@+id/verGuideline2"
app:layout_constraintBottom_toTopOf="@+id/horGuideline4" />
<ImageView
android:id="@+id/imageView4"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerCrop"
app:srcCompat="@drawable/ic_launcher_background"
app:layout_constraintTop_toTopOf="@+id/horGuideline3"
app:layout_constraintStart_toStartOf="@+id/verGuideline3"
app:layout_constraintEnd_toStartOf="@+id/verGuideline4"
app:layout_constraintBottom_toTopOf="@+id/horGuideline4" />
<android.support.constraint.Guideline
android:id="@+id/verGuideline1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.05" />
<android.support.constraint.Guideline
android:id="@+id/verGuideline2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.35" />
<android.support.constraint.Guideline
android:id="@+id/verGuideline3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.65" />
<android.support.constraint.Guideline
android:id="@+id/verGuideline4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
app:layout_constraintGuide_percent="0.95" />
<android.support.constraint.Guideline
android:id="@+id/horGuideline1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.12" />
<android.support.constraint.Guideline
android:id="@+id/horGuideline2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.47" />
<android.support.constraint.Guideline
android:id="@+id/horGuideline3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.53" />
<android.support.constraint.Guideline
android:id="@+id/horGuideline4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
app:layout_constraintGuide_percent="0.88" />
</android.support.constraint.ConstraintLayout>
结果你的布局看起来像这样:
答案 3 :(得分:0)
在这里查看您的图像是您可以做的,使用相对布局并将线性布局放在其中。如果要使图像视图正确适合,也可以使用weightSum。
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginLeft="5dp"
android:layout_marginLeft="5dp" >
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:orientation="vertical" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:orientation="vertical" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
</RelativeLayout>