首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >具有正确的高宽比和边框的Android图片

具有正确的高宽比和边框的Android图片
EN

Stack Overflow用户
提问于 2016-12-31 16:31:06
回答 6查看 1.8K关注 0票数 5

我想有固定大小的盒子120x180DP,其中包含一个正确的高宽比和边框画在它周围。

XML:

代码语言:javascript
运行
复制
<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布局:

代码语言:javascript
运行
复制
<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变形图片:

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

比约恩的回答:

拉胡尔回答没有底部边框

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2017-01-09 13:24:43

背景使用简单的Framelayout,ImageView使用ImageView:

代码语言:javascript
运行
复制
<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中,因此对于背景资源文件,只需要颜色和角:

代码语言:javascript
运行
复制
<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>
票数 1
EN

Stack Overflow用户

发布于 2017-01-03 08:21:27

代码语言:javascript
运行
复制
<ImageView
android:id="@id/img"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:scaleType="fitCenter" />

scaleType="fitCenter“(省略时默认)

  • 将使它尽可能宽的父母允许和向上/向下规模的需要保持纵横比。 scaleType="centerInside“
  • 如果src的内部宽度小于父宽度,则将图像水平中心化。
  • F src的内禀宽度大于父本宽度,使其尽可能宽,并保持低比例尺的纵横比。

无论您使用android:src还是ImageView.setImage*,.key都是android的:调整视图包

使用CardView也可以为imageView制作圆角。

代码语言:javascript
运行
复制
 <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>
票数 5
EN

Stack Overflow用户

发布于 2017-01-02 20:14:03

拥有圆角ImageView可能是一项痛苦的任务。您可以使用既支持圆角又支持边框的库。例如

https://github.com/vinc3m1/RoundedImageView

如果您了解它的功能,那么您可以轻松地创建自己的ImageView。诀窍是重写onDraw方法的ImageView和剪辑使用路径。您可以找到一些与此主题相关的文章。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41410068

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档