Как применить радиус угла к LinearLayout

118

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

Амир Кхан
источник
Пожалуйста, взгляните на уже отвеченный вопрос на stackoverflow.com/questions/1683185/…
Раджеш

Ответы:

279

Вы можете создать XML-файл в папке с возможностью рисования. Назовите это, например,shape.xml

В shape.xml:

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

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

    <stroke
        android:width="2dp"
        android:color="#C4CDE0" >
    </stroke>

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

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

</shape>

<corner>Тег для вашего конкретного вопроса.

При необходимости внесите изменения.

И в вашем whatever_layout_name.xml:

<LinearLayout
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_margin="5dp"
    android:background="@drawable/shape"    >
</LinearLayout>

Это то, что я обычно делаю в своих приложениях. Надеюсь это поможет....

Сиддхарт Леле
источник
Как установить фоновое изображение в этом xml
винеш
1
@vignesh: Который можно рисовать и где его установить? Если вы имеете в виду <shape>пример, он уже установлен в XML макета здесь:android:background="@drawable/shape"
Сиддхарт Леле
3
что, если у этого линейного макета уже есть фоновое изображение, и я хочу, чтобы он имел радиус угла? в вашем коде я не смогу установить фоновое изображение, так как свойство фона linearLayout установлено с помощью shape.xml
newton_guima
@MrAppleBR: я не смогу установить фоновое изображение : правильно. Но в контексте вопроса у OP был вариант использования, когда это было действительным. В упомянутом вами варианте использования это не то, к чему вам следует стремиться.
Сиддхарт Леле,
@SiddharthLele, что мне делать? не могли бы вы объяснить с помощью небольшого источника или, может быть, ссылки? Спасибо!
newton_guima 09
8

раскладка

<LinearLayout 
    android:id="@+id/linearLayout"
    android:layout_width="300dp"
    android:gravity="center"
    android:layout_height="300dp"
    android:layout_centerInParent="true"
    android:background="@drawable/rounded_edge">
 </LinearLayout>

Папка для рисования rounded_edge.xml

<shape 
xmlns:android="http://schemas.android.com/apk/res/android">
    <solid 
        android:color="@android:color/darker_gray">
    </solid>
    <stroke 
         android:width="0dp" 
         android:color="#424242">
    </stroke>
    <corners 
         android:topLeftRadius="100dip"
         android:topRightRadius="100dip"
         android:bottomLeftRadius="100dip"
         android:bottomRightRadius="100dip">
    </corners>
</shape>
Судхир Сингх
источник
2

попробуйте это, чтобы программно установить фон с радиусом для LinearLayout или любого вида.

 private Drawable getDrawableWithRadius() {

    GradientDrawable gradientDrawable   =   new GradientDrawable();
    gradientDrawable.setCornerRadii(new float[]{20, 20, 20, 20, 20, 20, 20, 20});
    gradientDrawable.setColor(Color.RED);
    return gradientDrawable;
}

LinearLayout layout = new LinearLayout(this);
layout.setBackground(getDrawableWithRadius());
Рамеш Кумар
источник