如何根据Android Studio中的屏幕大小调整按钮大小

时间:2014-12-07 12:58:39

标签: android xml android-layout

我是android开发的新手,我正在android studio中制作一个计算器。我的计算器工作正常但是它的布局有问题我将它安装在我的平板电脑上并且按钮非常小,因为我在Android Studio的模拟器上设计它们,按钮大小没有变化,需要帮助以便按钮大小随屏幕大小的变化而增加。

我在Android Studio中的计算器设计

Calculator design

<?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"
    android:background="#ff000000">
    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/clear"
        android:layout_alignParentTop="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_marginTop="110dp"
        android:background="@drawable/clear_btn" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/plus_minus"
        android:layout_alignBottom="@+id/clear"
        android:layout_toRightOf="@+id/clear"
        android:layout_toEndOf="@+id/clear"
        android:layout_marginLeft="-11dp"
        android:background="@drawable/pm_btn" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/per"
        android:layout_alignBottom="@+id/plus_minus"
        android:layout_toRightOf="@+id/plus_minus"
        android:layout_toEndOf="@+id/plus_minus"
        android:layout_marginLeft="-11dp"
        android:background="@drawable/per_btn" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/div"
        android:layout_alignTop="@+id/per"
        android:layout_toRightOf="@+id/per"
        android:layout_toEndOf="@+id/per"
        android:layout_marginLeft="-11dp"
        android:background="@drawable/div_btn"
        android:layout_alignParentRight="false" />

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="70dp"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:id="@+id/disp"
        android:layout_above="@+id/plus_minus"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentEnd="true"
        android:textColor="@android:color/white"
        android:textSize="32sp"
        android:inputType="none"
        android:textStyle="normal"
        android:gravity="right" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/seven"
        android:layout_below="@+id/clear"
        android:layout_toLeftOf="@+id/plus_minus"
        android:layout_toStartOf="@+id/plus_minus"
        android:layout_marginTop="-10dp"
        android:layout_alignParentTop="false"
        android:layout_alignParentLeft="true"
        android:background="@drawable/seven_btn" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/eight"
        android:layout_alignTop="@+id/seven"
        android:layout_alignLeft="@+id/plus_minus"
        android:layout_alignStart="@+id/plus_minus"
        android:background="@drawable/eight_btn" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/nine"
        android:layout_alignBottom="@+id/seven"
        android:layout_alignLeft="@+id/per"
        android:layout_alignStart="@+id/per"
        android:background="@drawable/nine_btn" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/mul"
        android:layout_alignTop="@+id/nine"
        android:layout_alignLeft="@+id/div"
        android:layout_alignStart="@+id/div"
        android:background="@drawable/mul_btn" />

    <Button
        android:layout_width="103dp"
        android:layout_height="90dp"
        android:id="@+id/four"
        android:layout_below="@+id/seven"
        android:layout_alignRight="@+id/seven"
        android:layout_alignEnd="@+id/seven"
        android:layout_marginTop="-10dp"
        android:layout_alignParentLeft="false"
        android:background="@drawable/four_btn" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/five"
        android:layout_alignBottom="@+id/four"
        android:layout_alignLeft="@+id/eight"
        android:layout_alignStart="@+id/eight"
        android:background="@drawable/five_btn" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/six"
        android:layout_alignTop="@+id/five"
        android:layout_alignLeft="@+id/nine"
        android:layout_alignStart="@+id/nine"
        android:background="@drawable/six_btn" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/sub"
        android:layout_toEndOf="@+id/nine"
        android:layout_alignTop="@+id/six"
        android:layout_alignLeft="@+id/mul"
        android:layout_alignStart="@+id/mul"
        android:background="@drawable/min_btn" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/one"
        android:layout_below="@+id/four"
        android:layout_alignLeft="@+id/four"
        android:layout_alignStart="@+id/four"
        android:layout_marginTop="-10dp"
        android:layout_alignParentLeft="false"
        android:background="@drawable/one_btn" />

    <Button
        android:layout_width="203dp"
        android:layout_height="90dp"
        android:id="@+id/zero"
        android:layout_below="@+id/one"
        android:layout_alignLeft="@+id/one"
        android:layout_alignStart="@+id/one"
        android:layout_marginTop="-10dp"
        android:background="@drawable/zero_btn"
        android:layout_alignParentLeft="true"
        android:layout_marginLeft="-7dp" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/two"
        android:layout_above="@+id/zero"
        android:layout_alignLeft="@+id/five"
        android:layout_alignStart="@+id/five"
        android:background="@drawable/two_btn" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/three"
        android:layout_below="@+id/five"
        android:layout_alignLeft="@+id/six"
        android:layout_alignStart="@+id/six"
        android:layout_marginTop="-10dp"
        android:background="@drawable/three_btn" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/add"
        android:layout_toEndOf="@+id/three"
        android:layout_below="@+id/six"
        android:layout_alignLeft="@+id/sub"
        android:layout_alignStart="@+id/sub"
        android:layout_marginTop="-10dp"
        android:background="@drawable/plus_btn" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/dot"
        android:layout_below="@+id/two"
        android:layout_alignRight="@+id/three"
        android:layout_alignEnd="@+id/three"
        android:layout_marginTop="-10dp"
        android:background="@drawable/dot_btn" />

    <Button
        android:layout_width="100dp"
        android:layout_height="90dp"
        android:id="@+id/equ"
        android:layout_toEndOf="@+id/dot"
        android:layout_below="@+id/three"
        android:layout_alignLeft="@+id/add"
        android:layout_alignStart="@+id/add"
        android:layout_marginTop="-10dp"
        android:background="@drawable/equ_btn" />

</RelativeLayout>

5 个答案:

答案 0 :(得分:10)

您必须使用layout_weight才能达到您想要的效果,并且将LinearLayout内的每一行按钮以及LinearLayouts加上{{ 1}}将包含在一个大的TextView而不是LinearLayout中,如下所示:

RelativeLayout

<强>更新

使用ImageButtons代替Buttons以获得更好的可伸缩性,这就是你必须使用它的方法:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/main_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#ff000000"
    android:orientation="vertical"
    android:weightSum="6" >

    <TextView
        android:id="@+id/disp"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:gravity="center"
        android:inputType="none"
        android:textAppearance="?android:attr/textAppearanceLarge"
        android:textColor="@android:color/white"
        android:textSize="32sp"
        android:textStyle="normal" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1"
        android:orientation="horizontal"
        android:weightSum="4" >

        <Button
            android:id="@+id/clear"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="4"
            android:background="@drawable/clear_btn" />

        <!-- then the three remaining buttons -->

        <LinearLayout />

        <!-- then the four remaining rows -->


        <!-- in the last row the "0" button will have layout_weight="2" NOT "1" -->
    </LinearLayout>

</LinearLayout>

请注意,我们改变了:

1- <ImageButton android:id="@+id/clear" android:layout_width="0dp" android:layout_height="match_parent" android:layout_weight="4" android:background="@android:color/transparent" android:src="@drawable/clear_btn" android:scaleType="fitCenter" /> <!-- and so for all Buttons --> :从layout_heightwrap_content

2- match_parent:删除 drawable (clear_btn)并将其设为background

我们补充说:

1- transparent:为其指定 drawable (clear_btn)。

2- src:使其scaleType使其在所有可用区域中缩放,而不会破坏图像缩放比率。

PS :如果您希望Button能够承受所有区域天气,它是否具有可扩展性,请将fitCenterscaleType更改为fitCenter(您可能需要使用&#34; 0 &#34;按钮)。

答案 1 :(得分:2)

如果您想支持多个屏幕,请不要拖放并手动调整视图大小。

您可以同时检查android:layout_weight属性和LinearLayout

答案 2 :(得分:1)

在android中设置按钮的高度/宽度时,使用固定密度像素值将在所有屏幕上产生精确的大小。使用宽度值wrap_contentfill_parent,权重等将使按钮看起来符合屏幕密度。

尝试浏览此链接: - Best Practices for User Interface

答案 3 :(得分:1)

解决方案1:  请使用dimens.xml指定按钮和高度。

对于平板电脑,请创建文件夹值-sw600dp,values-sw720dp并将您的dimens.xml放入其中。

解决方案2:

Use linearlayout and layout_weight property.

答案 4 :(得分:0)

<android.support.v7.widget.RecyclerView  
android:id="@+id/sampleRecyclerView"  
android:scrollbars="vertical"  
android:layout_width="fill_parent"  
android:layout_height="fill_parent">

<Button android:id="@+id/sampleButton"
 android:width="0dp"
 android:height="50dp">
</Button>
</android.support.v7.widget.RecyclerView>

我认为这里的重点是线性布局中的<Button> </Button>

android:width="0dp" // This line changes width as of linear layout.
android:height="50dp">