以编程方式布局按钮

时间:2018-04-29 08:38:21

标签: android android-layout

我是Android开发人员的新手,在桌面和Web应用程序编码方面拥有丰富的经验,而且我只是掌握了视图布局的工作方式。我之前一直在使用线性布局和权重来解决我的设计问题,但是由于(我相信)这个设计不存在,统一表格我正在努力。 enter image description here

我想要Tag5旁边的Tag5和Tag1,然后是旁边的Tag 6和7。到目前为止,我的代码是

    Display display = getWindowManager().getDefaultDisplay();
    Point size = new Point();
    display.getSize(size);
    int width = size.x;
    int height = size.y;

    String tag;
    for (int i = 0; i <= 7; i++) {
        int indColumn = width / 7;
        int indColumnHeight = height / 9;
        tag = "#tag" + i;
        View tagView = layoutInflater.inflate(R.layout.layout_child, null, false);
        Button tagTextView = (Button) tagView.findViewById(R.id.tagTextView);
        if (i == 0 || i == 3 || i == 6 || i == 7) {
            tagTextView.setWidth(Math.round(indColumn * 2));
        } else {
            tagTextView.setWidth(Math.round(indColumn));
        }
        if (i == 0) {
            tagTextView.setHeight(Math.round(indColumnHeight * 2));
        } else {
            tagTextView.setHeight(Math.round(indColumnHeight));
        }

        tagTextView.setText(tag);
        tagLayout.addView(tagView);

我尝试过添加

        if(i==5) {
            RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            lp.addRule(RelativeLayout.RIGHT_OF, 0);
            lp.addRule(RelativeLayout.BELOW, 1);
            tagTextView.setLayoutParams(lp);
        }

在tagTextView.set文本之前,但没有区别

对于单个按钮,xml看起来像这样

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1">
<Button
    android:id="@+id/tagTextView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:background="#a000"
    android:textColor="#fff"/>
</RelativeLayout>

1 个答案:

答案 0 :(得分:0)

我接受了EasyJoin Dev所说的内容,稍微调整一下,我使用layout_toEndOf和layout_below选项创建了一个Relative布局,然后在活动创建方法中,我以编程方式覆盖宽度和高度,以获得基于百分比的大小调整。 / p>