如何在使用显示指标时从 imageView 中删除白色边框?

How to remove white border from imageView while using Display Metrics?

我正在尝试从我的圆角图像中删除白边。使用显示指标将图像应用于 "pop up window"。弹出 window 有效并显示图像,但是由于图像的圆角,角有白色边框。

这是显示弹出窗口的代码 window

public class Pop extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.popup);

    DisplayMetrics dm = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(dm);

    int width = dm.widthPixels;
    int height = dm.heightPixels;

    getWindow().setLayout((int)(width*0.7), (int)(height*0.7))
    ;
}

}

这是将图像附加到此 window

的 XML 代码
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">

<ImageView
    android:id="@+id/pop"
    android:layout_height="match_parent"
    android:layout_width="match_parent"
    android:src="@drawable/pop_up"
    android:scaleType="fitXY">

</ImageView>

</RelativeLayout>

我尝试了以下方法从我的带有圆角的 PNG 中删除白角(一次一个):

Java Class:

ImageView ws = (ImageView) findViewById(R.id.pop);
ws.getBackground().setAlpha(0);

XML:

android:cropToPadding="false"
android:background="@null"
android:background="@android:color/transparent"
android:alpha="0.0"

我一次尝试了所有这些不同的属性,但没有任何效果。我做错了什么?预先感谢大家的帮助:D!

1. 将属性 android:background="@android:color/transparent" 添加到您的 RelativeLayout 使其成为 transparent.

2. 将属性 android:adjustViewBounds="true" 添加到 ImageView 以调整其 bounds 以保持其 drawable 的纵横比.

试试这个:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@android:color/transparent">

    <ImageView
        android:id="@+id/pop"
        android:layout_height="match_parent"
        android:layout_width="match_parent"
        android:src="@drawable/pop_up"
        android:scaleType="fitXY"
        android:adjustViewBounds="true" >

    </ImageView>
</RelativeLayout>

所以我最终弄清楚了如何解决这个问题。这就是我所做的。在样式 XML 文件中,我为弹出 window 创建了一个自定义主题,并添加了

<item name="android:windowBackground">@android:color/transparent</item>

添加到他们的样式中,而不是将其添加到包含实际图像的 imageView 中。弹出 window 现在没有白色边框了。

<style name="AppTheme.Custom">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowCloseOnTouchOutside">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

然后在清单中,这样引用主题:

<activity
        android:name=".Pop"
        android:theme="@style/AppTheme.Custom"
        android:screenOrientation="landscape">
    </activity>

感谢大家的帮助!