[英]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>
這是我的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創建這種UI。
使用LinearLayout.LayoutParams.MATCH_PARENT
代替
LinearLayout.LayoutParams.WRAP_CONTENT
用於ImageView
和包含ImageView
的LinearLayout
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.