Android:5个按钮位置:更好的方式?

时间:2015-11-10 22:32:50

标签: android android-layout button android-linearlayout relativelayout

我想像图片一样修复5个按钮。但是我把五个按钮放在了Nexus 6的位置。我意识到当我在Nexus 10上试用这个代码时我失去了1个小时:所有的按钮位于不同的位置!

修复5个按钮的最佳方法是什么,所有设备/屏幕的所有位置都可以。

以下布局是否有效?

#include <iostream>
int useRecursion(int x);
using namespace std;

int main(){
    int n;
    cout<<"enter an integer: ";
    cin>>n;
    cout<<useRecursion(n)<<endl;
    return 0;
}

int useRecursion(int x){
    if(x/10 == 0)
        return x;
    else
        return useRecursion(x/10) + useRecursion(x%10);
}

Button Layout

我重复我的问题,因为我不清楚:如何将Button放在特定位置?例如:我想将My GreenButton从顶部放在屏幕的70%处,从右边/左边放置50个屏幕

2 个答案:

答案 0 :(得分:2)

尝试将RelativeLayoutandroid:layout_alignParentTopandroid:layout_centerVertical等属性以及其他类似的对齐属性结合使用。它们允许您专门将按钮放置在布局中以获得所需的效果。结果如下:

enter image description here

以下是代码:

<?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:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin"
    tools:context="com.yourpackage.FiveButtonActivity">

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button1"
        android:id="@+id/button1"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button2"
        android:id="@+id/button2"
        android:layout_alignParentTop="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button3"
        android:id="@+id/button3"
        android:layout_centerVertical="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button4"
        android:id="@+id/button4"
        android:layout_alignBottom="@+id/button5"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true" />

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button5"
        android:id="@+id/button5"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true" />
</RelativeLayout>

答案 1 :(得分:1)

尝试使用 PercentRelativeLayout 。您可以为视图提供百分比,对您的案例非常有用。最近添加到支持库。

http://developer.android.com/reference/android/support/percent/PercentRelativeLayout.html

示例:

<UserControl
x:Class="MyControl"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
x:Name="Control"
mc:Ignorable="d" >

   <Grid Height="240" VerticalAlignment="Top">
     <Rectangle Fill="{Binding ElementName=Control, Path=Background}" />
   </Grid>
</UserControl>

您可以使用的属性是:

 <android.support.percent.PercentRelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="match_parent">

     <ImageView
         app:layout_widthPercent="50%"
         app:layout_heightPercent="50%"
         app:layout_marginTopPercent="25%"
         app:layout_marginLeftPercent="25%"/>

 </android.support.percent.PercentRelativeLayout>