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?
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>
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>
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);
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.