Android开发:如何将CardView内的ImageView居中显示?
解决CardView内ImageView无法居中的问题
看起来你遇到的问题主要是布局属性使用不当导致的,我来帮你一步步修正:
先指出你代码里的几个关键问题
CardView是FrameLayout的子类,不支持android:orientation属性,你写的这个属性完全无效,得删掉。ImageView的android:layout_centerHorizontal="true"和android:layout_centerVertical="true"是RelativeLayout的专属属性,在CardView(FrameLayout)里不会生效,要换成layout_gravity。- 外层的
LinearLayout没有设置让CardView居中的属性,导致CardView一直靠左。
修正后的完整布局代码
<ScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <!-- 外层LinearLayout必须填满ScrollView宽度,才能让内部View居中 --> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" <!-- 让子View(CardView)水平居中 --> android:orientation="vertical" android:padding="16dp"> <android.support.v7.widget.CardView android:layout_width="wrap_content" android:layout_height="wrap_content" app:cardCornerRadius="80dp" app:cardElevation="10dp" android:gravity="center"> <!-- 让内部ImageView居中,或者给ImageView加layout_gravity也行 --> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/titelbild280x280" android:layout_gravity="center"/> <!-- 确保ImageView在CardView内居中 --> </android.support.v7.widget.CardView> </LinearLayout> </ScrollView>
额外优化建议
如果希望 CardView 在整个屏幕(ScrollView)的垂直方向也居中,只需要把外层 LinearLayout 的 layout_height 改成 match_parent,并把 gravity 改成 center_vertical|center_horizontal:
<LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_vertical|center_horizontal" android:orientation="vertical" android:padding="16dp">
这样调整后,你的ImageView就能完美居中显示啦!
内容的提问来源于stack exchange,提问作者leccepen
相关产品推荐
相关产品推荐

