android在圆形cardview中设置图像

android在圆形cardview中设置图像,android,cardview,Android,Cardview,我正在使用DialogFragment在cardwiew中显示图像,但我没有得到预期的完整图像。 这里是屏幕短。我怎样才能填满这个空间 这是我的密码 public class dlgProfile extends DialogFragment { MainActivity _main; private MainActivity context; private TextView txtBenutzerName; private TextView txtName; private TextVi

我正在使用
DialogFragment
cardwiew
中显示图像,但我没有得到预期的完整图像。 这里是屏幕短。我怎样才能填满这个空间

这是我的密码

public class dlgProfile extends DialogFragment {


MainActivity _main;
private MainActivity context;
private TextView txtBenutzerName;
private TextView txtName;
private TextView txtAdresse;
private TextView txtTaetigkeit;
private BlurredImageView ivProfile;
private final String TAG = "fragprofile";
private Question q;
private Answer a;
private TextView txtID;
private Long BenutzerID;
private String BenutzerName;
private TextView btnPhone;
private TextView btnEMail;
CircleImageView cvImg;
private ImageView btnWhatsApp;
private MainActivity.OnlineState onlineState = MainActivity.OnlineState.offline;
private TextView txtOnlineState;

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    if (_main == null) _main = (MainActivity) getActivity();
    context = _main;
    View v = inflater.inflate(R.layout.fragprofile, container, false);
    txtID = v.findViewById(R.id.txtID);
    txtBenutzerName = v.findViewById(R.id.txtBenutzername);
    txtName = v.findViewById(R.id.txtName);
    txtAdresse = v.findViewById(R.id.txtAdresse);
    txtTaetigkeit = v.findViewById(R.id.txtTaetigkeitsschwerpunkte);
    txtOnlineState = v.findViewById(R.id.txtOnlineState);
    ivProfile = v.findViewById(R.id.imgProfile);
    cvImg = v.findViewById(R.id.imgProfile2);
    btnPhone = (TextView) v.findViewById(R.id.btnPhone);
    btnEMail = (TextView) v.findViewById(R.id.btnEMail);
    btnWhatsApp = (ImageView) v.findViewById(R.id.btnWhatsApp);

    if (this.BenutzerName != null) {
        try {
            setValues(this.BenutzerID, this.BenutzerName);
        } catch (Throwable throwable) {
            throwable.printStackTrace();
            lib.ShowException(TAG, context, throwable, false);
        }
    }


    getDialog().getWindow().setBackgroundDrawableResource(R.drawable.bg_round_corner);
    return v;
}

void setValues(final Question q, final Answer a) throws Throwable {
    JSONObject N;
    if (a == null) {
        this.onlineState = q.onlineState;
        setValues(q.BenutzerID, q.Benutzername);
       
    } else {
        this.onlineState = a.onlineState;
        setValues(a.BenutzerID, a.BenutzerName);
       
    }

}

void setValues(Long BenutzerID, String Benutzername) throws Exception {
    if (txtID == null) {
        this.BenutzerID = BenutzerID;
        this.BenutzerName = Benutzername;
        return;
    }
    JSONObject N = _main.clsHTTPS.getUser(_main.getBenutzerID(), BenutzerID);
    txtID.setText("" + BenutzerID);
    txtBenutzerName.setText(Benutzername);
    txtName.setText((N.isNull(VORNAME) ? "?" : N.getString(VORNAME)) + " " + (N.isNull(NAME) ? "?" : N.getString(NAME)));
    txtAdresse.setVisibility(BenutzerID.longValue() == _main.getBenutzerID()
            || N.getBoolean("gewerblich") ? View.VISIBLE : View.GONE);
    txtAdresse.setText((N.isNull("adresse") ? "" : N.getString("adresse")));
    txtTaetigkeit.setVisibility(BenutzerID.longValue() == _main.getBenutzerID()
            || N.getBoolean("gewerblich") ? View.VISIBLE : View.GONE);
    txtTaetigkeit.setText((N.isNull(TAETIGKEITSSCHWERPUNKTE) ? "" : N.getString(TAETIGKEITSSCHWERPUNKTE)));
    txtOnlineState.setText(this.onlineState.getStateString());
    Bitmap profile = null;
    try {
        String fname;
        fname = ".JPG";
        Bitmap in = _main.clsHTTPS.downloadProfileImage(this.getContext(), BenutzerID,
                _main.user.getLong(Constants.id), Benutzername);
        if (in != null) {
            profile = in;
        }
    } catch (Throwable e) {
        e.printStackTrace();
        Log.i(TAG, null, e);
    }

    if (profile != null) {
        ivProfile.setImageBitmap(profile);
    }
    if (profile != null) {
        cvImg.setImageBitmap(profile);
    }
    final ContactVO contactVO = new ContactVO(N);
    if (BenutzerID.longValue() != _main.getBenutzerID() && !contactVO.isBestaetigt()
            && contactVO.isLimindoUser() && (_main.clsHTTPS.AdminID == null || _main.clsHTTPS.AdminID == 0)) {
        btnEMail.setVisibility(View.GONE);
        btnPhone.setVisibility(View.GONE);
        btnWhatsApp.setVisibility(View.GONE);
    } else {
        if (contactVO.getContactEmail().length() > 3) {
            btnEMail.setTag(contactVO.getContactEmail());
            btnEMail.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
                    String[] aEmailList = {contactVO.getContactEmail()};
                    //String aEmailCCList[] = { "user3@fakehost.com","user4@fakehost.com"};
                    emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, aEmailList);
                    //emailIntent.putExtra(android.content.Intent.EXTRA_CC, aEmailCCList);
                    emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "");
                    emailIntent.setType("text/plain");
                    emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "");
                    MainActivity.dontStop++;
                    context.startActivityForResult(emailIntent, MainActivity.RGLOBAL);
                }
            });
        } else {
            btnEMail.setVisibility(View.GONE);
        }
        if (contactVO.getContactNumber().length() > 3) {
            btnPhone.setTag(contactVO.getContactNumber());
            btnPhone.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    String phone = contactVO.getContactNumber();
                    Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", phone, null));
                    MainActivity.dontStop++;
                    startActivityForResult(intent, MainActivity.RGLOBAL);
                }
            });
            btnWhatsApp.setTag(contactVO.getContactNumber());
            btnWhatsApp.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (contactVO.getContactNumber().length() > 0) {
                        String number = contactVO.getContactNumber();
                        number = number.replaceFirst("\\+", "");
                        String message = "";
                        try {
                            
                            String url = "https://api.whatsapp.com/send?phone=" + number;
                            Intent i = new Intent(Intent.ACTION_VIEW);
                            i.setData(Uri.parse(url));
                            MainActivity.dontStop++;
                            startActivityForResult(i, MainActivity.RGLOBAL);
                        } catch (Exception e) {

                        }

                    }
                }
            });
        } else {
            btnPhone.setVisibility(View.GONE);
            btnWhatsApp.setVisibility(View.GONE);
        }

    }


}
}


这是我用来显示数据的cardview的可绘制的
bg_圆角

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
    <solid android:color="#FFFFFF" />
    <corners android:radius="30dp" />
    <padding
        android:bottom="10dp"
        android:left="10dp"
        android:right="10dp"
        android:top="10dp" />
</shape>

这是我的imageview的xml

<ru.egslava.blurredview.BlurredImageView
    android:id="@+id/imgProfile"
    android:layout_width="match_parent"
    android:layout_height="200dp"
    android:adjustViewBounds="true"
   android:scaleType="centerCrop"
    android:src="@drawable/vn_logo_c02"
    app:downSampling="2"
    app:keepOriginal="true"
    app:layout_constraintTop_toTopOf="parent"
    app:radius="0.9" />

我建议您尝试以编程方式或直接在布局XML文件上使用
视图的宽度和高度


如果这不起作用,请尝试在
ImageView
的不同
scaleType
s之间交替切换,直到看到正在查看的结果;可能
fitCenter
fitXY
可以满足您的特定需求。

我建议您尝试通过编程或直接在布局XML文件上使用
视图的宽度和高度


如果这不起作用,请尝试在
ImageView
的不同
scaleType
s之间交替切换,直到看到正在查看的结果;可能
fitCenter
fitXY
可以满足您的特定需求。

您有两个问题,无法将图像移到卡的边缘

1。在所有边缘周围填充

由于背景形状的四边都有填充,因此它将通过该填充插入所有内容。您的图像和卡的边缘之间将有一个间隙。 从可绘制XML中删除填充(或在将其作为背景可绘制的视图上将填充属性设置为
0dp
)将删除此间隙。然后,您将需要为您的文本视图和其他内容添加边距,您仍然希望有一个间隙

2。图像被吸引到左侧

  • 设置
    android:scaleType=“centerCrop”
    android:adjustViewBounds=“false”
    。这会使图像均匀放大,以便在图像和ImageView边界之间不留间隙,并且不会扭曲纵横比。它将使图像居中并裁剪“挂起”边缘的像素
  • 在ImageView上设置android:layout\u width=“match\u parent”
。这将要求它获取卡的全部宽度
  • 在ImageView上设置android:layout_height
  • 。根据您的目标,您有两种选择:
    • wrap_content
      将使其将其高度设置为位图或可绘制的高度。这可能无法单独满足您的需要,因此请使用android:adjustViewBounds=“true”使其缩放高度,以保持图像的纵横比与宽度的关系
    • 150dp
      或其他固定高度。这可能是你想要的,假设这里的图像具有相同的纵横比
  • 您可能永远都不想将
    scaleType=“centerCrop”
    android:adjustViewBounds=“true”
    组合在一起,因为这两种模式在概念上相互冲突。
    centerCrop
    意味着“我接受我的边界由其他人决定,并将缩放我的内容以适应它,然后裁剪其余内容,“而
    adjustViewBounds
    的意思是“我将更改我的边界以匹配我的内容大小。”

    • 您有两个问题阻止您的图像进入卡的边缘

      1。在所有边缘周围填充

      由于背景形状的四边都有填充,因此它将通过该填充插入所有内容。您的图像和卡的边缘之间将有一个间隙。 从可绘制XML中删除填充(或在将其作为背景可绘制的视图上将填充属性设置为
      0dp
      )将删除此间隙。然后,您将需要为您的文本视图和其他内容添加边距,您仍然希望有一个间隙

      2。图像被吸引到左侧

      • 设置
        android:scaleType=“centerCrop”
        android:adjustViewBounds=“false”
        。这会使图像均匀放大,以便在图像和ImageView边界之间不留间隙,并且不会扭曲纵横比。它将使图像居中并裁剪“挂起”边缘的像素
      • 在ImageView上设置android:layout\u width=“match\u parent”。这将要求它获取卡的全部宽度
      • 在ImageView上设置android:layout_height。根据您的目标,您有两种选择:
        • wrap_content
          将使其将其高度设置为位图或可绘制的高度。这可能无法单独满足您的需要,因此请使用android:adjustViewBounds=“true”使其缩放高度,以保持图像的纵横比与宽度的关系
        • 150dp
          或其他固定高度。这可能是你想要的,假设这里的图像具有相同的纵横比
      • 您可能永远都不想将
        scaleType=“centerCrop”
        android:adjustViewBounds=“true”
        组合在一起,因为这两种模式在概念上相互冲突。
        centerCrop
        意味着“我接受我的边界由其他人决定,并将缩放我的内容以适应它,然后裁剪其余内容,“而
        adjustViewBounds
        的意思是“我将更改我的边界以匹配我的内容大小。”

      我已经尝试了所有这些,但这不是解决方案Yet您有可以共享的布局XML文件吗?您在CardView中使用的是哪种ViewContainer?我已经编辑了我的问题哦,我明白了。我快速阅读了值
      adjustViewBounds
      ,这似乎意味着将此标志变为true会使您尊重图像的纵横比