Android图像水平拉长

时间:2016-11-10 03:40:02

标签: android

我必须显示一个半屏尺寸的图像。

enter image description here

此活动的主要线性布局有3个线性布局。

在第一个线性布局中, ImageView ,其高度尺寸必须是屏幕的1/2尺寸。此图像从html标记解析并使用Picasso加载到ImageView 画面很长,我希望它是正常的。

第二和第三种布局必须保持屏幕的1/2尺寸。

您可以从下图中看到它:

先谢谢。

3 个答案:

答案 0 :(得分:0)

尝试使用以下解决方案

在您的XML文件中更改为ImageView,就像那样

    <com.nitin.widgets.DynamicImageView
        android:id="@+id/newsimageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentEnd="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:paddingTop="5dp"
        android:src="@drawable/no_image" />

这是完整的代码,用于避免沿左/右边缘的薄间隙

DynamicImageView.java

  package com.nitin.widgets;

  import android.content.Context;
  import android.graphics.drawable.Drawable;
  import android.util.AttributeSet;
  import android.widget.ImageView;

  public class DynamicImageView extends ImageView {
      public DynamicImageView(final Context context, final AttributeSet attrs)   
          {
           super(context, attrs);
          }
  @Override
  protected void onMeasure(final int widthMeasureSpec, final int heightMeasureSpec) {
    final Drawable d = this.getDrawable();

    if (d != null) {
        //avoid thin vertical gaps along the left/right edges
    final int width = MeasureSpec.getSize(widthMeasureSpec);
    final int height = (int) Math.ceil(width * (float) d.getIntrinsicHeight() / d.getIntrinsicWidth());
        this.setMeasuredDimension(width, height);
    } else {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }
 }
}

我建议尝试使用此解决方案。它对我有用。

答案 1 :(得分:0)

请使用 scaleType 选项 CenterCrop ,此选项会以更好的比例显示图片。

mapStateToProps

答案 2 :(得分:0)

尝试使用此布局。根据您的要求设置子线性布局的方向。

<LinearLayout 
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:orientation="vertical">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="0dp" 
        android:layout_weight="1"
        android:scaleType="centerCrop"/>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_weight="1">

        <LinearLayout></LinearLayout>
        <LinearLayout></LinearLayout>

    </LinearLayout>

</LinearLayout>