簡體   English   中英

如何在Android項目的Java中使用weightSum?

[英]How do I use weightSum in Java in Android project?

我用XML制作了一個簡單的UI,現在嘗試用Java達到相同的結果。 但是由於某種原因,體重對我不起作用。 對我而言,用Java創建UI確實很重要,因為XML對我不起作用。

這是我的XMl代碼:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:weightSum="4">

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:weightSum="2">

            <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/french"
                android:adjustViewBounds="true"
                android:layout_weight="1"/>

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/french"
                android:adjustViewBounds="true"
                android:layout_weight="1"/>

        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:weightSum="2">

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/french"
                android:adjustViewBounds="true"
                android:layout_weight="1"/>

            <ImageView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/french"
                android:adjustViewBounds="true"
                android:layout_weight="1"/>

        </LinearLayout>

    </LinearLayout>

</RelativeLayout>

XML代碼

這是我的Java代碼

RelativeLayout rl = new RelativeLayout(c);
        RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
                RelativeLayout.LayoutParams.MATCH_PARENT,
                RelativeLayout.LayoutParams.MATCH_PARENT
        );
        rl.setLayoutParams(rlp);
        rl.setBackgroundColor(Color.parseColor("#FFFFFF"));

        LinearLayout container = new LinearLayout(c);
        LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
        );
        container.setLayoutParams(llp);
        container.setWeightSum(4f);
        container.setOrientation(LinearLayout.VERTICAL);

        LinearLayout upperRow = new LinearLayout(c);
        llp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
        );
        upperRow.setLayoutParams(llp);
        upperRow.setWeightSum(2f);

        ImageView ivOne = new ImageView(c);
        llp = new LinearLayout.LayoutParams(
                0,
                LinearLayout.LayoutParams.WRAP_CONTENT
        );
        llp.weight = 1f;
        ivOne.setLayoutParams(llp);
        try {
            ivOne.setImageDrawable(Drawable.createFromStream(a.getAssets().open("Rest/french.jpg"),null));
        } catch (IOException e) {
            e.printStackTrace();
        }

        ImageView ivTwo = new ImageView(c);
        llp = new LinearLayout.LayoutParams(
                0,
                LinearLayout.LayoutParams.WRAP_CONTENT
        );
        llp.weight = 1f;
        ivTwo.setLayoutParams(llp);
        try {
            ivTwo.setImageDrawable(Drawable.createFromStream(a.getAssets().open("Rest/french.jpg"),null));
        } catch (IOException e) {
            e.printStackTrace();
        }

        upperRow.addView(ivOne);
        upperRow.addView(ivTwo);

        LinearLayout bottomRow = new LinearLayout(c);
        llp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT
        );
        bottomRow.setLayoutParams(llp);
        bottomRow.setWeightSum(2f);

        ImageView ivThree = new ImageView(c);
        llp = new LinearLayout.LayoutParams(
                0,
                LinearLayout.LayoutParams.WRAP_CONTENT
        );
        llp.weight = 1f;
        ivThree.setLayoutParams(llp);
        try {
            ivThree.setImageDrawable(Drawable.createFromStream(a.getAssets().open("Rest/french.jpg"),null));
        } catch (IOException e) {
            e.printStackTrace();
        }



        ImageView ivFour = new ImageView(c);
        llp = new LinearLayout.LayoutParams(
                0,
                LinearLayout.LayoutParams.WRAP_CONTENT
        );
        llp.weight = 1f;
        ivFour.setLayoutParams(llp);
        try {
            ivFour.setImageDrawable(Drawable.createFromStream(a.getAssets().open("Rest/french.jpg"),null));
        } catch (IOException e) {
            e.printStackTrace();
        }

        bottomRow.addView(ivThree);
        bottomRow.addView(ivFour);

        container.addView(upperRow);
        container.addView(bottomRow);

        rl.addView(container);
        a.setContentView(rl);

Java代碼

有人可以向我解釋我做錯了什么以及如何用Java創建這種UI。

使用LinearLayout.LayoutParams.MATCH_PARENT代替

LinearLayout.LayoutParams.WRAP_CONTENT

用於ImageView和包含ImageViewLinearLayout

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM