布局和按钮

发布于 2024-11-28 23:39:21 字数 1091 浏览 0 评论 0原文

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) then do this and that。

是否有任何其他方法来计算宽度,如果按钮相当于屏幕的宽度,则执行此操作或此操作,或者像表布局中的任何属性一样简单地包装行内容的任何其他方法?

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 File

<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>

But whenever i execute my application it just move my buttons in a single row and after 5 buttons all the buttons move out from the screen. i dont' want to add more rows as i don't want to hard-code anything in my code like placing some code if (counter%5==0) then do this and that.

Is there any other way to calculate the width that if the buttons are equivalent to the width of screen then do this or that or any other way like any property in table Layout which simply wrap content of a row?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

甜中书 2024-12-05 23:39:21

是的,有一种方法可以获取应用程序中任何组件的准确宽度。在此处查看我对不久前提出的问题的回答。正如您所看到的,我实例化了一个 Paint 对象,但这不是必需的,除非您希望获取文本本身的宽度。但是,您必须使用密度乘数:

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

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

Yes there is a way to get the exact width of any component in your app. Look at my answer to my question asked a while ago here. As you can see, I instantiate a Paint object, but that's not necessary unless you wish to get the width of the text itself. However you must use the density multiplier:

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

That will convert any function that gets the width of a component (in this case, your button) to the actual pixel width on any given devices. So you would get the button width (via invoking the getWidth() function on your Button object) and then multiply by that scaling factor.

我一直都在从未离去 2024-12-05 23:39:21

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

Using Contex's method getResources() you can access all the resources for your application's package. The method returns Resources and you can see here all properties that are available.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文