如何设置宽度和高度的权重?
How to set weight for width and height?
我需要创建宽度和高度为父视图百分比的动态视图 size.So我需要为一个视图的宽度和高度添加权重。
可能吗?
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:weightSum="4"
android:orientation="horizontal">
<ImageView
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_weight="1"
android:gravity="center"
android:id="@+id/imgtype"
android:scaleType="fitCenter"/>
<TextView
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_weight="3"
android:id="@+id/txtsubject"
android:textStyle="bold"
android:textSize="@dimen/lat_sub_text_size"
android:textColor="@android:color/black"/>
<LinearLayout/>
在这里,您可以将父线性布局宽度的主要部分分配给 textview,剩下的小部分分配给 imageview,这是为了水平对齐,对于垂直对齐也可以这样做 well.Weightsum 属性 父决定它将包含的部分数。
例如,我有以下布局:
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/ll_forImage"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_forList"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</LinearLayout>
</LinearLayout>
现在,我将根据屏幕宽度和屏幕高度为每个视图设置宽度和高度。
int screenWidth = dpToPx(getResources().getConfiguration().screenWidthDp);
int screenHeight = dpToPx(getResources().getConfiguration().screenHeightDp);
int ratioW = ....;//
int ratioH = ....;//
setLayoutSize(ll_forImage, screenWidth/ratioW , screenHeight/ratioH );
setLayoutSize(ll_forList, screenWidth/ratioW , screenHeight - screenHeight/ratioH );
// You can use setTranslation to translate View to expected position.
与:
private int dpToPx(int dp) {
return (int) (dp * getResources().getDisplayMetrics().density + 0.5f);
}
private static void setLayoutSize(View view, int width, int height) {
ViewGroup.LayoutParams params = view.getLayoutParams();
params.width = width;
params.height = height;
view.setLayoutParams(params);
}
添加 layout_weight 是使用 LinearLayout 的好方法。
请记住,layout_weight 仅适用于 LinearLayout,不能与 RelativeLayout 一起使用。
我需要创建宽度和高度为父视图百分比的动态视图 size.So我需要为一个视图的宽度和高度添加权重。 可能吗?
<LinearLayout
android:layout_width="match_parent"
android:layout_height="100dp"
android:weightSum="4"
android:orientation="horizontal">
<ImageView
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_weight="1"
android:gravity="center"
android:id="@+id/imgtype"
android:scaleType="fitCenter"/>
<TextView
android:layout_width="0dp"
android:layout_height="80dp"
android:layout_weight="3"
android:id="@+id/txtsubject"
android:textStyle="bold"
android:textSize="@dimen/lat_sub_text_size"
android:textColor="@android:color/black"/>
<LinearLayout/>
在这里,您可以将父线性布局宽度的主要部分分配给 textview,剩下的小部分分配给 imageview,这是为了水平对齐,对于垂直对齐也可以这样做 well.Weightsum 属性 父决定它将包含的部分数。
例如,我有以下布局:
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/ll_forImage"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="match_parent"
android:layout_height="wrap_content" />
</LinearLayout>
<LinearLayout
android:id="@+id/ll_forList"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent">
</ListView>
</LinearLayout>
</LinearLayout>
现在,我将根据屏幕宽度和屏幕高度为每个视图设置宽度和高度。
int screenWidth = dpToPx(getResources().getConfiguration().screenWidthDp);
int screenHeight = dpToPx(getResources().getConfiguration().screenHeightDp);
int ratioW = ....;//
int ratioH = ....;//
setLayoutSize(ll_forImage, screenWidth/ratioW , screenHeight/ratioH );
setLayoutSize(ll_forList, screenWidth/ratioW , screenHeight - screenHeight/ratioH );
// You can use setTranslation to translate View to expected position.
与:
private int dpToPx(int dp) {
return (int) (dp * getResources().getDisplayMetrics().density + 0.5f);
}
private static void setLayoutSize(View view, int width, int height) {
ViewGroup.LayoutParams params = view.getLayoutParams();
params.width = width;
params.height = height;
view.setLayoutParams(params);
}
添加 layout_weight 是使用 LinearLayout 的好方法。 请记住,layout_weight 仅适用于 LinearLayout,不能与 RelativeLayout 一起使用。