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

时间:2017-05-14 06:36:24

标签: android android-layout android-screen-support

我正在尝试从具有圆角的图像中删除白边。使用“显示度量标准”将图像应用于“弹出窗口”。弹出窗口工作,它显示图像,但由于图像的圆角,角落有白色边框。

以下是显示弹出窗口的代码

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))
    ;
}

}

以下是将图像附加到此窗口的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类:

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!

2 个答案:

答案 0 :(得分:0)

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>

答案 1 :(得分:0)

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

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

他们的风格,而不是将其添加到包含实际图像的imageView。弹出窗口现在没有白色边框。

<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>

感谢大家的帮助!