Как сделать макет с закругленными углами...?

Как сделать макет с закругленными углами? Я хочу применить закругленные углы к моему LinearLayout.

Комментарии к вопросу (4)
Решение

1: Определите layout_bg.xml в drawables:

<?xml version="1.0" encoding="UTF-8"?>





2: Добавьте layout_bg.xml в качестве фона к вашему макету

android:background="@drawable/layout_bg"
Комментарии (15)

Для API 21+, использовать просмотров клипа

Закругленный контур отсечения была добавлена в класс " вид " в API 21. Увидеть это подготовка док или этот Ссылка для получения дополнительной информации.

Эта встроенная функция позволяет закругленными углами очень легко реализовать. Она работает на любой вид или макет и поддерживает правильное отсечение.

Здесь'ы что делать:

  • Создать округлую форму drawable и установить его в качестве ваш взгляд's на фоне: андроид:фон=на"@холст/round_outline"в
  • В соответствии с документацией, то все, что вам нужно сделать, это: андроид:clipToOutline=то"Правда"в

К сожалению, там, кажется, ошибка и этот атрибут XML в настоящее время не признается. К счастью, мы можем установить ограничение в Java:

  • В вашей деятельности или фрагмент: вид.setClipToOutline(правда)

Как Это Выглядит:

Специальное Примечание О ImageViews

setClipToOutline() работает только при вид'ы фон установлен в виде рисунков. Если этот фон формы не существует, вид обрабатывает почву'ы план в качестве границ для отсечения и затенения целей.

Это означает, что если вы хотите закруглить углы на ImageView с setClipToOutline(), ваше изображение должно исходить от андроида:КГД", а не " для Android:фон (так как фон используется для округлой формы). Если вы должны использовать фон, чтобы установить изображение вместо ГНЦ, вы можете использовать этот вложенных представлений обходной путь.

  • Создать внешнее макет с фоном установить на вашу форму катры
  • Заверните, что макет вокруг вашей книги (без заполнения)
  • В графическое представление (в том числе и что-нибудь еще в макете) теперь будет закреплен внешний макет's округленная форма.
Комментарии (9)

Вот копия XML-файла для создания drawable с белым фоном, черной рамкой и закругленными углами:

 <?xml version="1.0" encoding="UTF-8"?> 








сохраните его как xml-файл в каталоге drawable, Используйте его как любой фон drawable (иконка или файл ресурса), используя имя ресурса (R.drawable.your_xml_name).

Комментарии (5)

Использовать CardView в библиотеку поддержки В7 андроид. Хотя он'немного тяжело, он решает все проблемы, и достаточно легко. Не нравится способ выигрышного фона, он может успешно подпанелей клип.

<?xml version="1.0" encoding="utf-8"?>


Комментарии (1)

Я сделал так:

Проверьте скриншот:

Создайте файл drawable с именем custom_rectangle.xml в папке drawable:

<?xml version="1.0" encoding="utf-8"?>








Теперь примените фон прямоугольника к виду:

mView.setBackground(R.drawlable.custom_rectangle);

Готово

Комментарии (1)

Я думаю, что лучший способ сделать это, чтобы объединить 2 вещи:

  1. сделайте изображение макета, как показано в [здесь][1].

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

  3. установить катры на книги.

Это будет обрабатывать случаи, что других решений не смогли решить, например, контент, который имеет углы.

Я думаю, что это's также немного больше GPU-дружески, как это показывает один слой вместо 2 .

Единственный лучший способ, чтобы сделать полностью настраиваемое представление, но, что's большое код и может занять много времени. Я думаю, что то, что я предложил здесь является лучшим из обоих миров.

Здесь'ы фрагмент, как это можно сделать:

RoundedCornersDrawable.java

/**
 * shows a bitmap as if it had rounded corners. based on :
 * http://rahulswackyworld.blogspot.co.il/2013/04/android-drawables-with-rounded_7.html
 * easy alternative from support library: RoundedBitmapDrawableFactory.create( ...) ; 
 */
public class RoundedCornersDrawable extends BitmapDrawable {

    private final BitmapShader bitmapShader;
    private final Paint p;
    private final RectF rect;
    private final float borderRadius;

    public RoundedCornersDrawable(final Resources resources, final Bitmap bitmap, final float borderRadius) {
        super(resources, bitmap);
        bitmapShader = new BitmapShader(getBitmap(), Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
        final Bitmap b = getBitmap();
        p = getPaint();
        p.setAntiAlias(true);
        p.setShader(bitmapShader);
        final int w = b.getWidth(), h = b.getHeight();
        rect = new RectF(0, 0, w, h);
        this.borderRadius = borderRadius < 0 ? 0.15f * Math.min(w, h) : borderRadius;
    }

    @Override
    public void draw(final Canvas canvas) {
        canvas.drawRoundRect(rect, borderRadius, borderRadius, p);
    }
}

CustomView.java


public class CustomView extends ImageView {
    private View mMainContainer;
    private boolean mIsDirty=false;

    // TODO for each change of views/content, set mIsDirty to true and call invalidate

    @Override
    protected void onDraw(final Canvas canvas) {
        if (mIsDirty) {
            mIsDirty = false;
            drawContent();
            return;
        }
        super.onDraw(canvas);
    }

    /**
     * draws the view's content to a bitmap. code based on :
     * http://nadavfima.com/android-snippet-inflate-a-layout-draw-to-a-bitmap/
     */
    public static Bitmap drawToBitmap(final View viewToDrawFrom, final int width, final int height) {
        // Create a new bitmap and a new canvas using that bitmap
        final Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
        final Canvas canvas = new Canvas(bmp);
        viewToDrawFrom.setDrawingCacheEnabled(true);
        // Supply measurements
        viewToDrawFrom.measure(MeasureSpec.makeMeasureSpec(canvas.getWidth(), MeasureSpec.EXACTLY),
                MeasureSpec.makeMeasureSpec(canvas.getHeight(), MeasureSpec.EXACTLY));
        // Apply the measures so the layout would resize before drawing.
        viewToDrawFrom.layout(0, 0, viewToDrawFrom.getMeasuredWidth(), viewToDrawFrom.getMeasuredHeight());
        // and now the bmp object will actually contain the requested layout
        canvas.drawBitmap(viewToDrawFrom.getDrawingCache(), 0, 0, new Paint());
        return bmp;
    }

    private void drawContent() {
        if (getMeasuredWidth() 
Комментарии (9)

Попробуйте это...

1.создать выигрышного XML-код(custom_layout.xml):

<?xml version="1.0" encoding="utf-8"?>








2.добавьте свой вид на фоне

android:background="@drawable/custom_layout"
Комментарии (1)

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






С этой card_view:cardCornerRadius="в 5 диоптрий и", Вы можете изменить радиус.

Комментарии (0)

Функции для заданного радиуса углу программно

static void setCornerRadius(GradientDrawable drawable, float topLeft,
        float topRight, float bottomRight, float bottomLeft) {
    drawable.setCornerRadii(new float[] { topLeft, topLeft, topRight, topRight,
            bottomRight, bottomRight, bottomLeft, bottomLeft });
}

static void setCornerRadius(GradientDrawable drawable, float radius) {
    drawable.setCornerRadius(radius);
}

Используя

GradientDrawable gradientDrawable = new GradientDrawable();
gradientDrawable.setColor(Color.GREEN);
setCornerRadius(gradientDrawable, 20f);
//or setCornerRadius(gradientDrawable, 20f, 40f, 60f, 80f); 

view.setBackground(gradientDrawable);
Комментарии (0)

Лучший способ сделать это было бы:

background_activity.xml

<?xml version="1.0" encoding="UTF-8"?>











Это будет работать ниже по API 21, и дать вам что-то вроде этого:


Если вы готовы приложить немного больше усилий, более лучший контроль, а затем использовать для Андроид.поддержка.В7.виджет.CardView с атрибутом его cardCornerRadius атрибут (и набор рельефа до 0dp хиллингдон, чтобы избавиться от сопровождающего тени с cardView). Кроме того, это будет работать с API уровень как низкий, как 15.

Комментарии (4)

Использовать CardView, чтобы получить закругленные края для любых раскладов. Использовать : cardCornerRadius="в 5 диоптрий и quot card_view; для cardview, чтобы получить закругленные края макета.











Комментарии (1)

Самый лучший и простой способ будет использовать card_background катры в макете. Это также следует в Google's материал рекомендации по проектированию. Просто включить это в вас макет:

android:background="@drawable/card_background"

Добавьте это в ваш выигрышного каталог и имя его card_background.xml:

<?xml version="1.0" encoding="utf-8"?>















Комментарии (0)
<?xml version="1.0" encoding="UTF-8"?>





@Давид, просто поставить обивка же значение, как инсульт, поэтому границы могут быть видны, вне зависимости размера изображения

Комментарии (0)

Я'вэ изъяты @gauravsapiens ответ с моими комментариями внутри, чтобы дать вам обоснованное опасение того, что параметров будет эффект.

<?xml version="1.0" encoding="utf-8"?>














Если вы're просто хотите создать форму, которая округляет углы, убрав отступы и ход будет делать. Если вы удалите твердые как и вы, по сути, создали закругленными углами на прозрачном фоне.

Ради того, чтобы быть ленивый я создал форму, под, которой находится только сплошной белый фон с закругленными углами - наслаждайтесь! :)

<?xml version="1.0" encoding="utf-8"?>








Комментарии (0)

Создать свой XML в мешочки, layout_background.xml

 <?xml version="1.0" encoding="utf-8"?>





и затем добавьте это в ваш layout.xml`

 android:background="@drawable/layout_background"
Комментарии (1)




</форма>

Комментарии (0)