Программно раскладка кнопок - PullRequest
0 голосов
/ 29 апреля 2018

Я новичок в разработке Android, обладаю большим опытом в программировании для настольных компьютеров и веб-приложений, и только начинаю понимать, как работают макеты представлений. Я использовал линейные макеты и веса ранее, чтобы решить свои проблемы с дизайном, но из-за (я считаю), что этот дизайн не является равномерно табличным, я борюсь. enter image description here

Я хочу Tag5 рядом с Tag0 и под 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 голосов
/ 29 апреля 2018

Я взял то, что сказал EasyJoin Dev, и немного подправил его, я создал относительный макет с использованием параметров layout_toEndOf и layout_below, а затем в методе создания действий я программно переопределил ширину и высоту, чтобы получить размер в процентах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...