web-dev-qa-db-fra.com

comment mettre une bordure autour d'un Android relativelayout?

J'ai vu ceci subject à propos de la délimitation d'une bordure de texte Android, et je l'ai utilisée. Mais maintenant, je voudrais mettre une bordure autour des widgets qui sont situés dans une disposition relative. Comment puis-je le faire?

16
AyaAndro
  1. dans votre dossier res/drawable, créez un nouveau fichier background_border.xml

Dans ce fichier, vous allez définir le fond du widget comme ceci:

<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
       Android:shape="rectangle" >
    <!-- This is the stroke you want to define -->
    <stroke Android:width="1dp" 
            Android:color="@color/color_stroke"/>

    <!-- Optional, round your corners -->
    <corners Android:bottomLeftRadius="0dp"
             Android:topLeftRadius="5dp"
             Android:bottomRightRadius="5dp"
             Android:topRightRadius="0dp" />

    <!-- Optional, fill the rest of your background with a color or gradient, use transparent if you only want the border to be displayed-->
    <gradient Android:startColor="@Android:color/transparent"
              Android:endColor="@Android:color/transparent"
              Android:angle="90"/>
</shape>
  1. définissez l'arrière-plan de votre widget sur la configuration que vous venez de créer et que vous pouvez créer

par exemple. si vous voulez mettre votre frontière sur un délai relatif:

<RelativeLayout            
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            Android:background="@drawable/background_border"
            Android:padding="15dp">
    ...
</RelativeLayout>
43
RWIL
RelativeLayout layout = (RelativeLayout) view.findViewById(R.id.borderEffect); // id fetch from xml
ShapeDrawable rectShapeDrawable = new ShapeDrawable(); // pre defined class

// get Paint
Paint Paint = rectShapeDrawable.getPaint();

// set border color, stroke and stroke width
Paint.setColor(Color.GRAY);
Paint.setStyle(Style.STROKE);
Paint.setStrokeWidth(5); // you can change the value of 5
layout.setBackgroundDrawable(rectShapeDrawable);
10
GAURAV KUMAR GUPTA

Créez un FrameLayout qui récupère la couleur d'arrière-plan de votre bordure et une marge ou un remplissage de sa largeur, puis placez ce FrameLayout dans votre RelativeLayout. Placez le TextView dans votre FrameLayout au lieu de directement dans le RelativeLayout. poof bordure instantanée.

1
mah