2010-03-13 218 views
0

只是一个关于如何执行此操作的简短问题。我希望在屏幕底部有按钮,但如果屏幕尺寸较大,则会添加更多按钮。Android - 按钮填充布局

例如,在小屏幕尺寸下,底部可能会有4-5个按钮,但如果您在平板电脑或类似的平板上运行它,则可能会有20个按钮。

有什么建议吗?它不能滚动,它只需用按钮动态填充布局。

谢谢。

回答

3

为了把按钮在布局的底部,做这样的事情给你的布局:

<?xml version="1.0" encoding="utf-8"?> 

<RelativeLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/main_layout"> 
    <LinearLayout 
     android:layout_height="wrap_content" 
     android:id="@+id/button_layout" 
     android:layout_alignParentBottom="true" 
     android:layout_width="fill_parent" 
     android:gravity="center"> 
     <Button 
      android:id="@+id/Button01" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Button 1"></Button> 
     <Button 
      android:id="@+id/Button02" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Button 2"></Button> 
     <Button 
      android:id="@+id/Button03" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Button 3"></Button> 
    </LinearLayout> 
    <FrameLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:layout_above="@+id/button_layout" 
     android:id="@+id/content"> 
     <ListView 
      android:id="@+id/ListView01" 
      android:layout_height="fill_parent" 
      android:layout_width="fill_parent"></ListView> 
    </FrameLayout> 
</RelativeLayout> 

要改变多少按键根据屏幕大小显示,你应该实现多种屏幕分开布局尺寸..

http://developer.android.com/guide/practices/screens_support.html

+0

位置不是我的问题。而且我不想为每一个祝福的屏幕尺寸设置不同的布局。随着市场上大量的设备,我无法保持它的最新状态。 – GuyNoir 2010-03-14 03:49:42

+0

只有3种支持的屏幕尺寸:240x320,320x480和480x800。支持所有三个正确的答案并不困难:) – 2010-03-14 08:07:32

+0

真的吗?我不知道。所有平板电脑都是480x800吗?那么特定设备的定制版本呢? – GuyNoir 2010-03-14 14:04:43

0

听起来像是你想创建自己的自定义布局类。或者直接填充一个LinearLayout(例如)直到屏幕空间用完。

+0

有没有办法告诉我什么时候动态地用尽了屏幕空间? – GuyNoir 2010-03-14 14:05:32

0

如果您知道按像素的大小,则可以使用DisplayMetrics获取屏幕的尺寸,然后计算将在您的分配空间中安装多少个按钮。

 DisplayMetrics metrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(metrics); 

metrics.heightPixels GIVS像素绝对高度 metrics.ydpi每个屏幕英寸给出确切的物理像素

和metrics.density给出的逻辑密度换算目的

在这里看到:http://developer.android.com/reference/android/util/DisplayMetrics.html

然后就做类似

do{ 
    Button button=new Button(context); 
    button.setText("yada yada") 
    button.allYoursettings.... 
    . 
    . 
    LinearLayout.LayoutParams p = new LinearLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
    LinearLayout layout=(LinearLayout) findViewById(R.id.yourlayout); 
    layout.addView(button,p); 
} while(havespaceleft);