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)然后执行此操作。
有没有其他方法来计算宽度,如果按钮等于屏幕的宽度,那么这样或那样或任何其他方式,如表布局中的任何属性,只是包装行的内容?
答案 0 :(得分:0)
是的,有一种方法可以获得应用中任何组件的确切宽度。看看我刚才提出的问题的答案here。正如您所看到的,我实例化了一个Paint对象,但除非您希望获得文本本身的宽度,否则这不是必需的。但是,您必须使用密度乘数:
float scale = getContext().getResources().getDisplayMetrics().density;
这会将获取组件宽度(在本例中为您的按钮)的任何函数转换为任何给定设备上的实际像素宽度。因此,您将获得按钮宽度(通过调用Button对象上的getWidth()函数),然后乘以该缩放因子。
答案 1 :(得分:0)
答案 2 :(得分:0)
使用Contex的方法getResources(),您可以访问应用程序包的所有资源。该方法返回 资源 ,您可以看到here所有可用的属性。