如何使按钮占用空间并根据分辨率增加所需的大小?

时间:2014-04-24 12:30:20

标签: android android-layout android-intent android-fragments android-listview

我有一个布局,其中按钮放在屏幕上,我希望如果屏幕有更多的空间,那么按钮应该是每行三个,无论他们得到什么空间,他们的尺寸也应该用屏幕调整,我想要最大化屏幕中央每行三个按钮。现在我已经为两行按钮的每一行使用了线性布局,请指导我如何制作可调节按钮,这样如果屏幕尺寸很大,它应该最多显示三个按钮,如果尺寸很小,每行应该只显示两个按钮使用小按钮大小并按照默认屏幕上的说明,每行应显示三个按钮。

enter image description here

请参阅我的代码示例

  <LinearLayout android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:paddingLeft="25dip"
    android:paddingRight="25dip"
    android:paddingTop="25dip"
    android:layout_width="fill_parent">

                <Button
        android:id="@+id/Car"
       android:layout_width="110dip"
        android:layout_height="110dip"
        android:layout_marginLeft="10dip"
        android:text="@string/car" />

      <Button
        android:id="@+id/Taxi"
       android:layout_width="110dip"
        android:layout_height="110dip"
        android:layout_marginLeft="10dip"
        android:text="@string/taxi" />
      </LinearLayout>

3 个答案:

答案 0 :(得分:1)

您可以使用layout_weight根据LinearLayout的宽度自动设置按钮的宽度。

<LinearLayout 
    android:id="@+id/wrapper"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:paddingLeft="25dip"
    android:paddingRight="25dip"
    android:paddingTop="25dip"
    android:layout_width="match_parent">

    <Button
        android:id="@+id/Car"
        android:layout_width="0dp"
        android:layout_height="110dip"
        android:layout_marginLeft="10dip"
        android:layout_weight="1"
        android:text="@string/car" />

    <Button
        android:id="@+id/Taxi"
        android:layout_width="0dp"
        android:layout_height="110dip"
        android:layout_marginLeft="10dip"
        android:layout_weight="1"
        android:text="@string/taxi" />
</LinearLayout>

但是,我不认为你可以设置LinearLayout有三个按钮取决于XML的宽度。你只能以编程方式实现它。

if(getCurrentScreenWidth() > SPECIFIED_WIDTH_FOR_3_BUTTONS){
  LinearLayout layout = (LinearLayout)findViewById("wrapper");
  Button button = createNewButton();
  layout.addView(button)
}

但最佳做法是根据android document

中所述的屏幕加载不同的布局

答案 1 :(得分:0)

我就是这样做的。

为每个按钮设置宽度,如:

<Button
    android:id="@+id/Car"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_height="110dip"
    android:layout_marginLeft="10dip"
    android:text="@string/car" />

如果您为每个按钮将宽度设置为0dp并将权重设置为1,则按钮将展开以填充空间。

答案 2 :(得分:0)

使用高度和宽度的固定值可能会导致不同屏幕出现问题。使用xml代码下方根据您的要求对齐按钮。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:weightSum="3" >

    <Button
        android:id="@+id/Car"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/car" />

    <Button
        android:id="@+id/Taxi"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/taxi" />

    <Button
        android:id="@+id/bus"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:text="@string/bus" />

</LinearLayout>