如何在运行时动态设置按钮的宽度,以填补屏幕? [英] How to set button width dynamically at runtime to fill the screen?

查看:183
本文介绍了如何在运行时动态设置按钮的宽度,以填补屏幕?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我学习Android开发,我试图用六个按钮来填充屏幕。但我想动态设置按钮的大小。我使用越来越屏幕尺寸

I am learning android development and I am trying to fill the screen with six buttons. But I want to set the button size dynamically. I am getting screen size using

final DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
final int screenWidthInDp = (int) (displayMetrics.widthPixels / displayMetrics.density);

和我试图用设置每个按钮的处理程序

and I am trying to set the handlers of each button using

button.setWidth(screenWidthInDp/6);

我每排六个按钮,我想这取决于屏幕的大小变化和六个按键来填充屏幕。难道我做错了什么?

I have six buttons in each row and I want the size change depending on the screen and the six buttons to fill the screen. Am I doing something wrong?

这是一个按钮,看起来像我activity.xml

This is what a button looks like in my activity.xml

<Button
    android:id="@+id/bNum10"
    android:layout_width="50dp"
    android:layout_height="wrap_content"
    android:layout_below="@+id/bNum2"
    android:layout_toRightOf="@+id/bNum0"
    android:text="@string/sign" />

这是我的布局

<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:background="@android:color/background_dark"
    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=".Calc" >

    <TextView
        android:id="@+id/Display"
        android:layout_width="fill_parent"
        android:layout_height="25sp"
        android:background="@android:color/background_light"
        android:gravity="right"
        android:text="@string/Welcome"
        android:textColor="@android:color/black"
        android:textSize="24sp" />

    <Button
        android:id="@+id/bNum2"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/bNum1"
        android:layout_alignBottom="@+id/bNum1"
        android:layout_toRightOf="@+id/bNum1"
        android:text="@string/two" />

    <Button
        android:id="@+id/bNum3"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/bNum2"
        android:layout_alignBottom="@+id/bNum2"
        android:layout_toRightOf="@+id/bNum2"
        android:text="@string/three" />

    <Button
        android:id="@+id/bNum5"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/bNum4"
        android:layout_toRightOf="@+id/bNum4"
        android:text="@string/five" />

    <Button
        android:id="@+id/bNum6"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/bNum5"
        android:layout_alignBottom="@+id/bNum5"
        android:layout_toRightOf="@+id/bNum5"
        android:text="@string/six" />

    <Button
        android:id="@+id/bNum0"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_alignLeft="@+id/Display"
        android:layout_alignParentBottom="true"
        android:layout_marginBottom="14dp"
        android:text="@string/zero" />

    <Button
        android:id="@+id/bNum1"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_above="@+id/bNum0"
        android:layout_alignLeft="@+id/bNum0"
        android:text="@string/one" />

    <Button
        android:id="@+id/bNum4"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_above="@+id/bNum1"
        android:layout_alignLeft="@+id/bNum1"
        android:text="@string/four" />

    <Button
        android:id="@+id/bNum7"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_above="@+id/bNum5"
        android:layout_alignParentLeft="true"
        android:text="@string/seven" />

    <Button
        android:id="@+id/bNum8"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_above="@+id/bNum5"
        android:layout_toLeftOf="@+id/bNum6"
        android:text="@string/eight" />

    <Button
        android:id="@+id/bNum9"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_alignBottom="@+id/bNum8"
        android:layout_alignLeft="@+id/bNum6"
        android:text="@string/nine" />

    <Button
        android:id="@+id/bNum10"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_below="@+id/bNum2"
        android:layout_toRightOf="@+id/bNum0"
        android:text="@string/sign" />

    <Button
        android:id="@+id/bEqual"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/bExp"
        android:layout_alignBottom="@+id/bExp"
        android:layout_alignParentRight="true"
        android:text="@string/equal" />

    <Button
        android:id="@+id/bDot"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/bNum10"
        android:layout_alignBottom="@+id/bNum10"
        android:layout_toRightOf="@+id/bNum10"
        android:text="@string/dot" />

    <Button
        android:id="@+id/bExp"
        android:layout_width="50dp"
        android:layout_height="wrap_content"
        android:layout_alignBaseline="@+id/bDot"
        android:layout_alignBottom="@+id/bDot"
        android:layout_marginLeft="14dp"
        android:layout_toRightOf="@+id/bDot"
        android:text="@string/exp" />

</RelativeLayout>

我该如何解决这个问题?

How do I fix this?

推荐答案

使用的LinearLayout和重量等宽显示6个按​​键。

Use linearlayout and weight to display 6 buttons with equal width.

<LinearLayout
     android:layout_width="fill_parent"
     android:layout_height="wrap_content"
     android:orientation="horizontal" android:weightSum="6" >

     <Button

        android:layout_height="wrap_content"
        android:padding="10dip"
        android:layout_weight="1" />

     <Button
                   android:layout_width="0dp"
        android:layout_height="wrap_content"
                  android:layout_weight="1" />
  <Button
                       android:layout_width="0dp"
            android:layout_height="wrap_content"
                      android:layout_weight="1" />
  <Button
                       android:layout_width="0dp"
            android:layout_height="wrap_content"
                      android:layout_weight="1" />
  <Button
                       android:layout_width="0dp"
            android:layout_height="wrap_content"
                      android:layout_weight="1" />
  <Button
                       android:layout_width="0dp"
            android:layout_height="wrap_content"
                      android:layout_weight="1" />


  </LinearLayout>

这篇关于如何在运行时动态设置按钮的宽度,以填补屏幕?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆