无论使用什么设备,Android按钮都可以在屏幕上匹配

时间:2017-01-24 14:58:16

标签: android android-layout button

我开始编写我的第一个Android应用程序,我正在添加一些按钮。

我想要一个我已经管理的顶部和底部的横幅按钮,然后在相同尺寸的中间填充剩余空间的4个按钮。

有没有办法在没有试用和错误尺寸的情况下这样做,以便它可以在任何设备上运行?

Current App Layout

这是我的代码 -

   <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >


    <Button
        android:id="@+id/button1"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <Button
        android:text="Button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:id="@+id/button5"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:id="@+id/button2"
        android:layout_width="650px"
        android:layout_height="1000px"
        android:layout_above="@+id/button5"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:text="Button"
        android:layout_width="650px"
        android:layout_height="1000px"
        android:layout_below="@+id/button1"
        android:layout_alignRight="@+id/button2"
        android:layout_alignEnd="@+id/button2"
        android:id="@+id/button6" />

    <Button
        android:text="Button"
        android:layout_width="650px"
        android:layout_height="1000px"
        android:layout_alignBottom="@+id/button6"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:id="@+id/button7" />

    <Button
        android:text="Button"
        android:layout_width="650px"
        android:layout_height="1000px"
        android:layout_alignTop="@+id/button2"
        android:layout_alignLeft="@+id/button7"
        android:layout_alignStart="@+id/button7"
        android:id="@+id/button8" />

    </RelativeLayout>

2 个答案:

答案 0 :(得分:1)

不使用任何库,您可以实现此目的。顶部和按钮按钮之间的空间将被平均分割为4(它不会是正方形,总是取决于屏幕尺寸)

 public class PTGIndexVM
{
    [Display(Name="Select Promotion")]
    public int PromotionId { get; set; }
    public List<SelectListItem> PromotionOptions { get; set; }
    public IList<EditPTG> IndexList { get; set; }
    public IList<Product> Products { get; set; }
    public string wrapClass { get; set; }

    /// <summary>
    /// Members Setup
    /// </summary>
    public PTGIndexVM()
    {
        IndexList = new List<EditPTG>();
        PromotionOptions = new List<SelectListItem>();
        Products = new List<Product>();
        Setup();
    }

  vm.Products = productLogic
            .GetByAndInclude(x => x.PromotionID == PromotionId && x.WindowProduct == true && x.Active == true, new List<string>() { "Size", "ProductTemplate" })
            .Where(prod => allPTG.Any(x => x.ProductID == prod.ProductID))
            .OrderBy(prod => prod.ProductCode)
            .Select(prod => prod)
            .ToList();

 foreach (var product in Model.Products)
                    {
                    <th class="center-text" title="@product.ProductTemplate.Vertical (V) x @product.ProductTemplate.Horizontal (H)">
                        @Html.DisplayFor(m => product.ProductCode)
                    </th>
                    }
                }

答案 1 :(得分:1)

这是一个没有嵌套layout_weight属性的示例:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <Button
        android:id="@+id/top_button"
        android:layout_width="match_parent"
        android:layout_height="40dp" />

    <Button
        android:id="@+id/bottom_button"
        android:layout_width="match_parent"
        android:layout_height="40dp"
        android:layout_alignParentBottom="true"/>

    <GridLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_below="@id/top_button"
        android:layout_above="@id/bottom_button"
        android:useDefaultMargins="true"
        android:columnCount="2">
        <Button
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"/>
        <Button
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"/>
        <Button
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"/>
        <Button
            android:layout_columnWeight="1"
            android:layout_rowWeight="1"/>
    </GridLayout>
</RelativeLayout>