Android UI:哪种布局选项是互斥的?

时间:2010-10-07 21:06:29

标签: android user-interface layout attributes css

在Android中设计布局一段时间后,我仍然无法掌握它。通常结果是不可预测的。

我认为部分原因归结为一些布局选项不能很好地协同工作。即如果你使用一种方法来指定你的布局,你不应该用其他方式。

值得注意的是,对我而言,将layout_widthfill_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产生任何影响。我可能会去试验并禁用其他人看看它给我的东西。但我的问题是:是否有人有任何关于哪个属性阻止或反直觉地影响到哪个(逻辑)信息?我想让这个一劳永逸地排序。这是在某处记录的吗?

1 个答案:

答案 0 :(得分:2)

我注意到layout_weight似乎使minWidth无用。

给定线性布局中的三个按钮,左边和右边的权重为0,中心为1,更改任何这些的minWidth对渲染视图的方式完全没有影响,直到我删除layout_weight属性完全适用于每个按钮。我甚至确保所有minWidth的总和小于总视图的宽度。

我不知道为什么会这样。关于layout_weight的documentation

  

此属性指定“重要性”   视图的值,并允许它   展开以填充任何剩余空间   父视图。儿童观点可以   指定整数权重值,和   那么视图中的任何剩余空间   组被分配给儿童   声明重量的比例

我也非常想知道其他布局参数是否相互冲突。对我而言,为视图定义权重以填充“父视图中的剩余空间”将完全忽略视图的minWidth设置,这似乎非常不直观。