如何将绘图视图的尺寸设置为在壁画库中"wrap_content"



我正在使用应用程序中的Fresco库来加载图像。问题是我无法将图像高度设置为"wrap_content",因为Fresco库不支持"wrap_content"。那么,如何使用DraweeView使我的图像看起来好看呢?我看了看,但找不到解决这个问题的方法:湿壁画/包装_内容

例如:

<com.facebook.drawee.view.SimpleDraweeView
         android:id="@+id/intro_image1"
         android:layout_width="match_parent"
         android:layout_height= // Can't use "wrap_content"
         fresco:placeholderImage="@drawable/placeholder_image" />

BTW图像尺寸为730*760

由于您已经知道图像的确切尺寸,因此可以简单地计算图像的纵横比,然后用XML或Java设置纵横比。这是开箱即用的,您不需要任何自定义视图或其他答案中建议的DP/像素计算。

例如,这将是w/h=730/760=0.96052631578

现在您可以设置它:在XML:中

<com.facebook.drawee.view.SimpleDraweeView
    android:id="@+id/my_image_view"
    android:layout_width="match_parent" <!-- or the desired width -->
    android:layout_height="wrap_content"
    fresco:viewAspectRatio="0.96052631578" <!-- your aspect ratio -->
    <!-- other attributes -->

或者在Java中:

mSimpleDraweeView.setAspectRatio(0.96052631578f); // or whatever your aspect ratio is

另请参阅http://frescolib.org/docs/using-drawees-xml.html在最底层。

对于所有设备上的dp到px和px到dp,请使用以下公式:

Convert dp to pixel:
public int dpToPx(int dp) {
DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
int px = Math.round(dp * (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));       
return px;
}

将像素转换为dp:

public int pxToDp(int px) {
DisplayMetrics displayMetrics = getContext().getResources().getDisplayMetrics();
int dp = Math.round(px / (displayMetrics.xdpi / DisplayMetrics.DENSITY_DEFAULT));
return dp;
}

SimpleDraweeView不直接允许wrap_content作为维度。正如上面的答案清楚地表明的那样,解决办法是扩展课堂。

使用该公式可以正确查找所需的度量,并以编程方式设置绘图视图的布局参数。

相关内容

  • 没有找到相关文章

最新更新