使4个按钮分别占据屏幕的四分之一

时间:2016-04-10 17:10:19

标签: android xml button

我希望我的按钮看起来与this完全一样,但我无法弄清楚如何做到这一点。我曾尝试在谷歌的不同地方寻找,但没有一种方式像我想要的那样。我想让我的按钮有图像,我也想知道如何在不同的屏幕尺寸上调整这些图像的大小。

这是我的layout_main.xml。

<?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"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.mudd.devin.drivenow.MainActivity"
    android:weightSum="2">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button3"
        android:layout_marginTop="199dp">

    </Button>

    <Button

        android:layout_width="wrap_content"
        android:id="@+id/button1"
        android:layout_gravity="center"
        android:paddingLeft="20dp"
        android:paddingRight="20dp"
        android:layout_height="wrap_content"
        android:layout_marginBottom="@dimen/activity_vertical_margin" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="New Button"
        android:id="@+id/button2"
        android:layout_alignParentBottom="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />
</RelativeLayout>

4 个答案:

答案 0 :(得分:0)

您有3个选项,首先是简单的选项:

  1. RelativeLayout,其中心位于View
  2. View放在RelativeLayout的中心并对齐其周围的所有其他视图(toLeftOftoRightOf,...)

    1. 使用带有权重的嵌套LinearLayout
    2. 使用一个LinearLayout水平和一个垂直,分别给出0dp的宽度和高度,并设置所有weight="1"

      1. 撰写自定义布局/ ViewGroup
      2. 只需编写一个简单的布局,将您的视图分配为宽度和宽度。高度onLayout。这需要更多的知识,但如果正确完成,则是最有效的解决方案。

答案 1 :(得分:0)

您可以使用layout_weight propety在屏幕上设置precent的重量进行查看。

例如:enter image description here

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
tools:context=".MainActivity" >

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:orientation="horizontal" >

    <Button
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="1" >
    </Button>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="2" >
    </Button>
</LinearLayout>

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:layout_weight="1"
    android:orientation="horizontal" >

    <Button
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="3" >
    </Button>

    <Button
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:layout_weight="1"
        android:text="4" >
    </Button>
</LinearLayout>

答案 2 :(得分:0)

有点晚了,但你可以使用RelativeLayout,将虚拟对象置于中心位置,并将其余元素设置在该中心点周围。

答案 3 :(得分:0)

我不知道它是否适用于以前的版本,但在 Android Studio 4.1 中,您可以使用约束布局并更改按钮的这些属性:

select mod(date, 100) as day,
       mod(floor(date / 100), 100) as month