布局和按钮

时间:2011-08-10 21:30:54

标签: android layout tablelayout

TableLayout relativeLayout = (TableLayout)findViewById(R.id.ll1);
        TableRow row =new TableRow(this); 
        Button button ;
        int counter = 0;

        for(int i = 0;i<=13;i++){
                counter++;
                button = new Button(this);
                button.setText(counter);


                row.addView(button);

            }

        relativeLayout.addView(row,new TableLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT));
        relativeLayout.computeScroll();             

XML文件

<TableLayout android:id="@+id/ll1"  android:shrinkColumns="true"
        android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/button1"
        xmlns:android="http://schemas.android.com/apk/res/android"></TableLayout>

但每当我执行我的应用程序时,它只需将我的按钮移动到一行,然后在5个按钮后,所有按钮都从屏幕移出。我不想添加更多行,因为我不想在我的代码中对任何代码进行硬编码,例如放置一些代码if(counter%5 == 0)然后执行此操作。

有没有其他方法来计算宽度,如果按钮等于屏幕的宽度,那么这样或那样或任何其他方式,如表布局中的任何属性,只是包装行的内容?

3 个答案:

答案 0 :(得分:0)

是的,有一种方法可以获得应用中任何组件的确切宽度。看看我刚才提出的问题的答案here。正如您所看到的,我实例化了一个Paint对象,但除非您希望获得文本本身的宽度,否则这不是必需的。但是,您必须使用密度乘数:

float scale = getContext().getResources().getDisplayMetrics().density;

这会将获取组件宽度(在本例中为您的按钮)的任何函数转换为任何给定设备上的实际像素宽度。因此,您将获得按钮宽度(通过调用Button对象上的getWidth()函数),然后乘以该缩放因子。

答案 1 :(得分:0)

答案 2 :(得分:0)

使用Contex的方法getResources(),您可以访问应用程序包的所有资源。该方法返回 资源 ,您可以看到here所有可用的属性。