Почему бы не получить закругленные углы просмотра изображения после размещения изображения?

Вот мой код компоновки:

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





        <TableLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_margin="5dp"
            android:gravity="center" >

            <TableRow
                android:id="@+id/tableRow1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_weight="1" >

                <ImageView
                    android:id="@+id/imageView1"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/round"
                    android:scaleType="fitXY" />

                <ImageView
                    android:id="@+id/imageView2"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/roundp" 
                    android:scaleType="fitXY"/>
            </TableRow>

            <TableRow
                android:id="@+id/tableRow2"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_weight="1" >

                <ImageView
                    android:id="@+id/imageView3"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:background="@drawable/roundp"
                    android:scaleType="fitXY" />

                <ImageView
                    android:id="@+id/imageView4"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:layout_margin="5dp"
                    android:layout_weight="1"
                    android:scaleType="fitXY" />
            </TableRow>
        </TableLayout>

    </LinearLayout>

roundp.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle">
    <corners 
        android:topRightRadius="0dp"
        android:bottomLeftRadius="25dp"
        android:topLeftRadius="25dp"
        android:bottomRightRadius="0dp"/>

   <stroke 
       android:width="2dp"
       android:color="@color/red" />
   <solid 
       android:color="@color/white"/>


</shape>

round.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle">
    <corners 
        android:topRightRadius="25dp"
        android:bottomLeftRadius="0dp"
        android:topLeftRadius="0dp"
        android:bottomRightRadius="25dp"/>

   <stroke 
       android:width="2dp"
       android:color="@color/red" />
   <solid 
       android:color="@color/white"/>


</shape>

Если я не помещаю никакое изображение в ImageView, я вижу пустой ImageView со скругленными углами, после размещения изображения закругленные углы исчезают, нормальная прямоугольная форма отображается вместе с изображением. Как исправить эту проблему?

Любая помощь будет принята с благодарностью.

4 ответа

Вы использовали атрибут layout_weight, но нигде не использовали атрибут weight_sum.

Положить градиент в форме XML.

<gradient
        android:angle="270"
        android:endColor="#fddd"
        android:startColor="#ffff" />

Для раунда, вы можете добавить Android: отступы для отображения границы.

Тем не менее, для обхода, я понятия не имею, чтобы исправить это, если не иметь дело с изображением с помощью кода Java.

Есть код для добавления закругленных углов для изображения

public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {  

    Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), bitmap.getHeight(), Config.ARGB_8888);  

    Canvas canvas = new Canvas(output);  

    final int color = 0xff424242;  

    final Paint paint = new Paint();  

    final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());  

    final RectF rectF = new RectF(rect);  

    final float roundPx = pixels;  

    paint.setAntiAlias(true);  

    canvas.drawARGB(0, 0, 0, 0);  

    paint.setColor(color);  

    canvas.drawRoundRect(rectF, roundPx, roundPx, paint);  

    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));  

    canvas.drawBitmap(bitmap, rect, rect, paint);  <br>
    return output;  

}
Другие вопросы по тегам