我想有固定大小的盒子120x180DP,其中包含一个正确的高宽比和边框画在它周围。
XML:
<android.support.constraint.ConstraintLayout
android:layout_width="120dp"
android:layout_height="180dp"
app:layout_gravity="center">
<ImageView
android:id="@+id/picture"
android:layout_width="0dp"
android:layout_height="0dp"
android:background="@drawable/game_border"
app:srcCompat="@drawable/pic_lion"
android:scaleType="centerInside" />Game_border布局:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape android:shape="rectangle" >
<solid android:color="#55111111" />
<padding
android:bottom="4dp"
android:left="4dp"
android:right="4dp"
android:top="4dp" />
<corners android:radius="6dp" />
</shape>
</item>
</layer-list>此scaleType设置工作良好,因为它填充完整的瓷砖内部和背景是不过分的。但为了证明不正确的纵横比,我增加了最高利润率。见下图。我尝试了剩余的值,但它们要么画在边界上,要么不填充完整的内部部分。
我怎么能有瓷砖的边框周围的一部分图片与正确的纵横比?这幅画可以剪了。我认为这种技术被称为中心作物。我在毕加索图书馆找到的。

FitXY变形图片:

手动绘制图片时,我裁剪图片,同时保持高宽比。对不起,看起来很难看,但赏金很快就结束了。

比约恩的回答:

拉胡尔回答没有底部边框

发布于 2017-01-09 13:24:43
背景使用简单的Framelayout,ImageView使用ImageView:
<FrameLayout
android:layout_width="120dp"
android:layout_height="180dp"
android:background="@drawable/background_with_rounded_corners"
android:padding="4dp">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scaleType="centerCrop"/>
</FrameLayout>并将填充移到FrameLayout中,因此对于背景资源文件,只需要颜色和角:
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="rectangle">
<solid android:color="#55111111" />
<corners android:radius="6dp" />
</shape>
</item>
</layer-list>发布于 2017-01-03 08:21:27
<ImageView
android:id="@id/img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="fitCenter" />scaleType="fitCenter“(省略时默认)
无论您使用android:src还是ImageView.setImage*,.key都是android的:调整视图包
或使用CardView也可以为imageView制作圆角。
<android.support.v7.widget.CardView
android:layout_width="120dp"
android:layout_height="180dp"
android:layout_gravity="center"
android:layout_marginLeft="6dp"
android:layout_marginRight="6dp"
android:layout_marginTop="6dp"
app:cardCornerRadius="@dimen/_5dp"
app:cardBackgroundColor="#D3D3D3"
app:cardPreventCornerOverlap="false"
card_view:cardPreventCornerOverlap="false">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="3dp"
android:background="@drawable/image"
android:scaleType="fitXY" />
</android.support.v7.widget.CardView>发布于 2017-01-02 20:14:03
拥有圆角ImageView可能是一项痛苦的任务。您可以使用既支持圆角又支持边框的库。例如
https://github.com/vinc3m1/RoundedImageView
如果您了解它的功能,那么您可以轻松地创建自己的ImageView。诀窍是重写onDraw方法的ImageView和剪辑使用路径。您可以找到一些与此主题相关的文章。
https://stackoverflow.com/questions/41410068
复制相似问题