web-dev-qa-db-fra.com

Bouton Android ou TextView Border par programme sans utiliser la méthode setBackgroundDrawable

Je cherche un moyen de mettre une bordure pour textview ou un bouton par programme sans utiliser la méthode setBackgroundResource.

Le but que j'essaie d'atteindre ici est de changer la couleur d'arrière-plan de manière dynamique, mais avec une bordure fixe . Lorsque j'utilise la méthode setBackgroundResource pour la bordure d'arrière-plan, la bordure ne reste pas après le changement de couleur d'arrière-plan par programme. 

16
VizZy

Exemple simple, comment cela pourrait-il être réalisé:

activity_main.xml

<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" >

    <TextView
        Android:id="@+id/textView1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:padding="5dp"
        Android:text="@string/hello_world" />

</RelativeLayout>

MainActivity.Java

package com.exmple.test;

import Android.app.Activity;
import Android.graphics.drawable.GradientDrawable;
import Android.os.Bundle;
import Android.widget.TextView;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        GradientDrawable Gd = new GradientDrawable();
        Gd.setColor(0xFF00FF00); // Changes this drawbale to use a single color instead of a gradient
        Gd.setCornerRadius(5);
        Gd.setStroke(1, 0xFF000000);
        TextView tv = (TextView)findViewById(R.id.textView1);
        tv.setBackground(Gd);


    }

}
49
janzoner

Je pense que cela va vous aider.  

 <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
      Android:shape="rectangle">
      <gradient Android:startColor="#FFFFFF" 
        Android:endColor="#FFFFFF"
        Android:angle="270" />
      <corners Android:radius="3dp" />
      <stroke Android:width="5px" Android:color="#eecc68" />
    </shape>
<Button
        Android:id="@+id/button1"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignLeft="@+id/textView1"
        Android:layout_below="@+id/textView1"
        Android:layout_marginLeft="52dp"
        Android:layout_marginTop="39dp"
        Android:background="@drawable/button"
        Android:text="Button" />
0
user1682446