Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android布局最大宽度还是屏幕宽度?_Android - Fatal编程技术网

Android布局最大宽度还是屏幕宽度?

Android布局最大宽度还是屏幕宽度?,android,Android,是否可以将子屏幕的宽度设置为固定宽度,除非屏幕小于该宽度 i、 e.我希望下面的CardView通常为400dp,除非它位于小屏幕上,此时它应该是屏幕宽度(减去边距) 获取屏幕的DP DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics(); float dpWidth = displayMetrics.widthPixels / displayMetrics.density; 检查是否小于400 i

是否可以将子屏幕的宽度设置为固定宽度,除非屏幕小于该宽度

i、 e.我希望下面的CardView通常为400dp,除非它位于小屏幕上,此时它应该是屏幕宽度(减去边距)


获取屏幕的DP

DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
检查是否小于400

if(dpWidth < 400){
    cardView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
} else {
    cardView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,(400 * displayMetrics.density + 0.5f)));
}

说setWidth未定义?是的,你说得对。您需要再次使用setLayoutParams。很抱歉。差不多了,如果屏幕宽度小于400(dp),我需要与屏幕宽度匹配的宽度…这就是if语句的第一部分所做的。
if(dpWidth < 400){
    cardView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT));
} else {
    cardView.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,(400 * displayMetrics.density + 0.5f)));
}
android:layout_width="match_parent"
android:maxWidth="400dp"