gpt4 book ai didi

安卓 ImageView ScaleType *FIT_TOP*

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:08:27 28 4
gpt4 key购买 nike

我正在尝试实现一个可以容纳横向或纵向图像的 ImageView。这些图像应该适合 imageview 的宽度(如果是横向)或高度(如果是纵向),但在任何情况下它们都必须与 View 的顶部对齐,没有边距或填充。

我想要实现的是类似 android:scaleType="fitStart" 的东西,但在纵向图像的情况下居中或在横向图像的情况下与顶部对齐.

添加:

现在我正在使用这样一个丑陋的代码,它似乎可以工作,但不确定这是最好的解决方案:

<com.custom.layout.MyImageView 
android:id="@+id/detail_view_image"
android:src="@drawable/logo"
android:background="#fff"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_centerHorizontal="true"
android:cropToPadding="false"
android:adjustViewBounds="false"
/>

然后在我的类里面,我扩展了 ImageView:

@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int imgWidth = getDrawable().getIntrinsicWidth();
int imgHeight = getDrawable().getIntrinsicHeight();

if(imgWidth>imgHeight)
setScaleType(ScaleType.FIT_START);
else
setScaleType(ScaleType.FIT_CENTER);

int width = measureWidth(widthMeasureSpec);
int height = measureHeight(heightMeasureSpec);

setMeasuredDimension(width, height);
}

最佳答案

您可以在 onCreate() 方法中放置一个 fragment ,根据手机的方向更改 ImageView 的 scaleType,而不是覆盖原生 View 。

一些示例 fragment (我不确定它是否像那样工作但为了理解这个想法),在 onCreate 方法中:

ImageView imgView = findViewById(R.id.myImage);
//portrairt orientation
if(getResources().getConfiguration().orientation == Configuration.ORIENTATION_PORTRAIT) {
imgView.setScaleType(ScaleType.FIT_CENTER);
} else { //landscape orientation
imgView.setScaleType(ScaleType.FIT_START);
}

因此,当方向发生变化时,将再次调用 onCreate 并更改 View 的比例类型,如果您要重写 onConfigurationChanged() ,那么您应该在任何需要的地方再次添加上面的代码 fragment 。试一试,让我知道它是否有效

关于安卓 ImageView ScaleType *FIT_TOP*,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4796806/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com