android - 将 snackbar 中 ImageView 的宽度与 Android 中的自定义 View 的父级匹配不起作用

标签 android android-snackbar snackbar

我正在开发一个 Android 应用程序。在我的应用程序中,我使用带有自定义 View 的 snackbar 。我的自定义 View 只有 subview 。那是 ImageView 。显示带有 snackbar 的自定义 View 是可以的。但问题在于 snackbar 中 ImageView 的大小。我想将它设置为与父匹配。但是宽度与 snackbar 的宽度不匹配。

这是我为 snackbar 定制的 View 布局

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:layout_height="match_parent">

    <ImageView
        android:scaleType="centerCrop"
        android:id="@+id/snackbar_ad_image"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

这是我在 Activity 中展示 snackbar 的方式

 private void showSnackbarAd(View view,Ad ad)
    {
        final Snackbar snackbar = Snackbar.make(view,"",Snackbar.LENGTH_LONG);
        Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout)snackbar.getView();
        TextView textView = (TextView) layout.findViewById(android.support.design.R.id.snackbar_text);
        textView.setVisibility(View.INVISIBLE);
        View snackView = getLayoutInflater().inflate(R.layout.snack_bar_ad,null);
        ImageView imageView = (ImageView)snackView.findViewById(R.id.snackbar_ad_image);
        Picasso.with(getBaseContext()).load(ad.getImageUrl()).into(imageView);
        layout.addView(snackView, 0);
        snackbar.show();
}

我想要的是我想要 ImageView 宽度相同宽度的 snackbar 。但是我的代码不起作用。

这是我得到的。

enter image description here

如何使 ImageView 与 Snackbar 的宽度相同并适合 snackbar?

最佳答案

尝试下面的代码,

private void showSnackbarAd(View view,Ad ad) {
        final Snackbar snackbar = Snackbar.make(view,"",Snackbar.LENGTH_LONG);
        Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout)snackbar.getView();

        layout.setPadding(0, 0, 0, 0);//set padding to 0

        TextView textView = (TextView) layout.findViewById(android.support.design.R.id.snackbar_text);
        textView.setVisibility(View.INVISIBLE);
        View snackView = getLayoutInflater().inflate(R.layout.snack_bar_ad, layout);// use the parent ViewGroup instead of null
        ImageView imageView = (ImageView)snackView.findViewById(R.id.snackbar_ad_image);
        Picasso.with(getBaseContext()).load(ad.getImageUrl()).into(imageView);
        //layout.addView(snackView, 0);
        snackbar.show();
}

关于android - 将 snackbar 中 ImageView 的宽度与 Android 中的自定义 View 的父级匹配不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38030133/

相关文章:

java - 如何访问另一个对象中的 Android Activity?

android - 如何使用它自己的操作按钮关闭 Snackbar?

swift - 在 SwiftUI 中显示小吃吧消息

angular - 如何在服务上使用 SnackBar 以在 Angular 2 中的每个组件中使用

android - 使用 AsyncTaskLoader 填充 ListView

java - 如何将整个 Parseobject 从 fragment 传递到 Activity ?

android mapview - 附加到类似 "onZoom"的东西

Android 多行 Snackbar

kotlin - jetpack compose 脚手架 可以覆盖 SnackBar 的标准持续时间吗?

javascript - 增加此 MDL jquery snackbar 的 setTimeout