在Android中设计布局一段时间后,我仍然无法掌握它。通常结果是不可预测的。
我认为部分原因归结为一些布局选项不能很好地协同工作。即如果你使用一种方法来指定你的布局,你不应该用其他方式。
值得注意的是,对我而言,将layout_width
从fill_parent
更改为wrap_content
通常会改变世界。让我举一个具体的例子:
我的活动布局的一部分是LinearLayout:
<LinearLayout android:id="@+id/ll2" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:orientation="horizontal">
<LinearLayout android:id="@+id/ll2a" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:orientation="vertical" android:layout_weight="1">
<TextView android:id="@+id/l_cover" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/book_item_l_cover">
</TextView>
<ImageButton android:id="@+id/i_cover"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:scaleType="centerInside" android:gravity="center"
android:layout_weight="1" android:adjustViewBounds="true"
android:src="@drawable/spinner_black_76" android:minWidth="400dip">
</ImageButton>
</LinearLayout>
<LinearLayout android:id="@+id/ll2b" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:orientation="vertical" android:layout_weight="1">
<TextView android:id="@+id/l_back_cover" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:text="@string/book_item_l_back_cover">
</TextView>
<ImageButton android:id="@+id/i_back_cover"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:scaleType="centerInside" android:gravity="center"
android:layout_weight="1" android:adjustViewBounds="true"
android:src="@drawable/spinner_black_76">
</ImageButton>
</LinearLayout>
</LinearLayout>
要在彼此旁边获得2列左对齐标签按钮组合,我必须使用layout_weight
属性。由于adjustViewBounds
属性,ImageButtons围绕其图像缩小。这给我带来了不错的效果。
现在我最终想要的是拥有一定尺寸的按钮,这样手指就可以轻松按下它们,即使它们不包含任何图像(并且它们会缩小到仅几毫米)。正如您所见,我尝试设置android:minWidth="400dip"
。我希望按钮能够以宽度填充整个屏幕的一半(400是一个非常大的值),但我没有看到任何差异。
我猜上面的其他一个属性阻止minWidth
产生任何影响。我可能会去试验并禁用其他人看看它给我的东西。但我的问题是:是否有人有任何关于哪个属性阻止或反直觉地影响到哪个(逻辑)信息?我想让这个一劳永逸地排序。这是在某处记录的吗?
答案 0 :(得分:2)
我注意到layout_weight似乎使minWidth无用。
给定线性布局中的三个按钮,左边和右边的权重为0,中心为1,更改任何这些的minWidth对渲染视图的方式完全没有影响,直到我删除layout_weight属性完全适用于每个按钮。我甚至确保所有minWidth的总和小于总视图的宽度。
我不知道为什么会这样。关于layout_weight的documentation:
此属性指定“重要性” 视图的值,并允许它 展开以填充任何剩余空间 父视图。儿童观点可以 指定整数权重值,和 那么视图中的任何剩余空间 组被分配给儿童 声明重量的比例
我也非常想知道其他布局参数是否相互冲突。对我而言,为视图定义权重以填充“父视图中的剩余空间”将完全忽略视图的minWidth设置,这似乎非常不直观。