<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<include
layout="@layout/view1"
android:layout_gravity="center_vertical" />
<include
layout="@layout/view2"
android:layout_gravity="center_vertical" />
</LinearLayout>
那么,android:layout_gravity会一直被忽略吗?这对于代码可重用性来说真的很糟糕...... 似乎layout_margin也不支持。
这是view1.xml布局
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:minHeight="45dip"
android:background="@drawable/updater_background" >
<ProgressBar
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:layout_marginRight="7dip"
android:visibility="gone" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical" />
</LinearLayout>
答案 0 :(得分:12)
两年后,这个bug仍然存在!即使 标记应支持所有android:layout _ * 属性, android:layout_gravity 属性也不是(哪种类型很大)布局可重用性的缺点。)
我目前使用的工作是以编程方式设置布局边距,如下所示:
( (LinearLayout.LayoutParams) includedView.getLayoutParams () ).gravity = Gravity.BOTTOM | Gravity.RIGHT;
或 FrameLayout 作为父级,例如:
( (FrameLayout.LayoutParams) includedView.getLayoutParams () ).gravity = Gravity.BOTTOM | Gravity.RIGHT;
编辑:
我还发现 android:layout_gravity 属性适用于 include 标记 IF 它( include tag)包含 layout_width 和 layout_height 标签!
答案 1 :(得分:0)
http://developer.android.com/resources/articles/layout-tricks-reuse.html表示支持所有layout_属性。
在你的情况下,以水平LinearLayout
为中心可能没有效果。尝试其他布局其他参数。
答案 2 :(得分:0)
我认为这可以通过插入加权布局来解决
例如
<LinearLayout
android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="com.sample.SampleActivity">
<LinearLayout
android:layout_weight="1"
android:layout_width="match_parent"
android:layout_height="0dp">
<--Some other Views-->
</LinearLayout>
<include
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/my_awesome_layout"
/>
如果你不想要任何组件,可以用Space替换LinearLayout。