Как придать макету закругленные углы Android

Я пытаюсь отобразить действие с полупрозрачным фоном поверх другого с возможностью рисования в центре экрана. Drawable имеет закругленные углы, и я установил прямоугольную форму с закругленными углами в качестве фона макета. Форма имеет возможность рисования в качестве фона. Проблема в том, что я все еще получаю черную квадратную рамку за закругленными углами. Есть ли способ избавиться от этой черной рамки?

Наверное, я не могу опубликовать изображение, потому что у меня нет репутации?

Вот xml для макета:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/custom_toast_layout_id"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"    
    android:orientation="horizontal"
    android:padding="5dp"   
    android:gravity="center"
    android:background="@drawable/myshape" >


    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hello"
        android:textColor="#000000"
        android:textSize="30sp" />


</RelativeLayout>

Вот xml формы:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:drawable="@drawable/blank_colordots_test">
        <shape android:shape="rectangle" android:padding="10dp">             
            <corners
                android:bottomRightRadius="35dp"
                android:bottomLeftRadius="35dp"
                android:topLeftRadius="35dp"
                android:topRightRadius="35dp"/>
        </shape>
    </item>
</layer-list>

person Daniel MacLeod    schedule 15.09.2014    source источник


Ответы (3)


Попробуйте этот код:

rounded_drawable.xml

<shape xmlns:android="http://schemas.android.com/apk/res/android" >

    <corners android:radius="15dp" />

    <solid android:color="#565656" />

    <stroke
        android:width="3dp"
        android:color="#ffffff" />

    <padding
        android:bottom="6dp"
        android:left="6dp"
        android:right="6dp"
        android:top="3dp" />

</shape>

Объявите этот стиль:

  <style name="ThemeWithCorners" parent="android:Theme.Dialog">

          <item name="android:windowNoTitle">true</item>
    </style>

Применить этот стиль в манифесте.

person KOTIOS    schedule 15.09.2014
comment
Это решение на самом деле выглядит очень красиво, но черная квадратная рамка, о которой я упоминал, все еще существует. Я хотел бы избавиться от него еще. - person Daniel MacLeod; 20.09.2014

Это должно соответствовать вашим требованиям:

//Макет:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_margin="10dp"
    android:background="@drawable/myshape"
    android:gravity="center">


    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="hello"
        android:textColor="#000000"
        android:textSize="30sp" />

</RelativeLayout>

//Форма:

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:bottom="0dp"
        android:left="0dp"
        android:right="0dp"
        android:top="0dp">
        <shape android:shape="rectangle">
            <solid android:color="#000000" />
            <corners android:radius="4dp" />
            <stroke
                android:width="1dp"
                android:color="#000000" />
        </shape>
    </item>
</layer-list>
person Víctor Albertos    schedule 15.09.2014
comment
У этого решения все еще была черная квадратная рамка, о которой я упоминал, и она была на самом деле больше. - person Daniel MacLeod; 20.09.2014

GradientDrawable border = new GradientDrawable();
    border.setColor(Color.rgb(255,255,255));
    border.setStroke(8, Color.red);
    border.setCornerRadius(20);
    yourview.setBackground(border);

Вы можете попробовать приведенный выше код, чтобы дать границу вашему макету. вы можете изменить радиус угла и цвета в соответствии с вашими требованиями. я использовал красный цвет в качестве границы

person Ravi Kishan Nag    schedule 20.03.2018
comment
Хотя этот фрагмент кода может быть решением, включая объяснение действительно помогает улучшить качество вашего сообщения. Помните, что вы отвечаете на вопрос для будущих читателей, и эти люди могут не знать причин вашего предложения кода. - person yivi; 20.03.2018
comment
Ответы только на код не приветствуются, поскольку они не предоставляют много информации для будущих читателей, пожалуйста, объясните, что вы написали. - person WhatsThePoint; 20.03.2018
comment
Спасибо @WhatsThePoint за совет ... это был мой первый ответ. - person Ravi Kishan Nag; 22.03.2018
comment
спасибо @yivi за совет ... это был мой первый ответ. - person Ravi Kishan Nag; 22.03.2018