将relativelayout的宽度设置为屏幕宽度的1/3?
Posted
技术标签:
【中文标题】将relativelayout的宽度设置为屏幕宽度的1/3?【英文标题】:Set the width of relativelayout 1/3 the width of the screen? 【发布时间】:2014-02-09 02:29:54 【问题描述】:我有如下布局。现在,我不想将相对布局的宽度设置为固定的 240 dp。我想将相对布局的宽度设置为屏幕宽度的 1/3。是否可以在 xml 文件中执行此操作。如果不可能,我该如何使用 java 代码来实现呢?
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:id="@+id/fullscreen"
style="@style/translucent">
<RelativeLayout
android:layout_
android:layout_
android:layout_gravity="right"
android:gravity="center"
android:background="#88000000"
android:id="@+id/sidebar">
</RelativeLayout>
</FrameLayout>
【问题讨论】:
【参考方案1】:您必须使用LinearLayout
才能使视图的宽度为其父视图的三分之一。
类似:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_>
<RelativeLayout
android:layout_
android:layout_
android:layout_weight="1"
android:gravity="center"
android:background="#88000000">
</RelativeLayout>
<ViewGroup
android:layout_
android:layout_
android:layout_weight="2">
</ViewGroup>
</LinearLayout>
关键位是layout_weights的比例。 documentation 很不错。
【讨论】:
【参考方案2】:在父级中使用weightsum="3"
,在子级中使用layout_weight=1
。 Take a look a this reference
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_
android:layout_
android:id="@+id/fullscreen"
style="@style/translucent"
android:orientation="horizontal"
android:weightSum="3">
<RelativeLayout
android:layout_
android:layout_
android:layout_gravity="right"
android:gravity="center"
android:background="#88000000"
android:id="@+id/sidebar"
android:layout_weight="1"
>
</RelativeLayout>
<!-- other views, with a total layout_weight of 2 -->
</LinearLayout>
【讨论】:
如果LinearLayout 只有一个子布局,那就是relativelayout。在relativelayout中只能设置layout_weight = 1吗? 你可以试试,你会自学的! :-) 无论如何,请记住,您始终可以为此目的使用虚拟视图,例如<View android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="2"> </View>
,它不会显示任何内容,但会使用额外的空间【参考方案3】:
LinearLayout
和 android:layout_orientation="horizontal"
是您想要的,以及权重。
<LinearLayout
android:layout_
android:layout_
android:orientation="horizontal">
<RelativeLayout
android:layout_
android:layout_
android:layout_weight="1"
...all your stuff... />
<View
android:layout_
android:layout_
android:layout_weight="2" />
</LinearLayout>
【讨论】:
以上是关于将relativelayout的宽度设置为屏幕宽度的1/3?的主要内容,如果未能解决你的问题,请参考以下文章
Android中RelativeLayout中的视图宽度和高度始终为零