L'écriture personnalisée LinearLayout android
J'ai une mise en page personnalisée qui attire transparente rectangle arrondi en dessous de ses enfants. Le problème, c'est quand j'essaie de l'ajouter à mon fichier xml, il ne s'est pas présenté. Aussi, lorsque j'essaie d'ajouter des paramètres à elle (c'est à dire android:layout_width
) le popup montre qu'aucun d'entre eux sont disponibles. La même chose arrive à tout enfant vues-je ajouter. Quelqu'un peut-il aider?
public class RoundRectLayout extends LinearLayout
{
private RectF shape;
public RoundRectLayout(Context context)
{
super(context);
LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layoutInflater.inflate(R.layout.settings, this);
shape = new RectF();
}
public RoundRectLayout(Context context, AttributeSet attrs)
{
super(context, attrs);
LayoutInflater layoutInflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
layoutInflater.inflate(R.layout.settings, this);
shape = new RectF();
}
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh)
{
shape = new RectF(0, 0, w - 5, h - 5);
super.onSizeChanged(w, h, oldw, oldh);
}
@Override
protected void dispatchDraw(Canvas canvas)
{
Paint temp = new Paint();
temp.setAlpha(125);
canvas.drawRoundRect(shape, 10f, 10f, temp);
super.dispatchDraw(canvas);
}
}
Vous devez vous connecter pour publier un commentaire.
Si vous voulez juste un rectangle arrondi arrière-plan pour votre LinearLayout, vous pouvez définir un drawable forme d'un fichier xml dans "res/drawable/":
Puis vous définissez la mise en page de l'arrière-plan pour le nom de votre drawable fichier xml. Si vous le nommé round_border.xml, définir l'arrière-plan:
La transparence est définie dans la suite...
2 premiers chiffres indique la transparence, les 6 derniers chiffres de la couleur.
Ce tuto m'a vraiment aidé avec yourp roblem
Tout d'abord, vous devez définir les champs que vous souhaitez transmettre à votre mise en page personnalisée dans un fichier res/values/attrs.xml
Maintenant préparer votre constructeur à l'attente de ces attributs
Puis ajouter un espace de noms à votre layout.xml alors que android konws étaient à regarder pour votre mise en page personnalisée. "mi.emballage" est le package java ont été votre mise en page personnalisée est.
Une fois que vous avez votre espace de noms, avec votre classe, il suffit d'appeler le les attributs que vous définissez dans attrs.xml
Mais si vous voulez juste pour dessiner un rectangle, vous pouvez utiliser la méthode suggérée dans l'autre réponse
Je pense que c'est le plugin qui échoue, mais vous pouvez spécifier android:layout_*, il sera pris en compte. De toute façon si vous voulez juste tirer un round rect mise en page, de suivre Marco instructions du