semplice esempio di come potrebbe essere questo raggiunto:
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);
}
}
Credo che faresti miglior uso un 9 patc h e usa il metodo setImageDrawable. O usa setBackground/setBackgroundDrawable con un drawable xml. (la differenza è nel livello API) –
un bordo è una forma di sfondo. Non puoi avere due sfondi contemporaneamente nella stessa vista. Una soluzione sarebbe incorporare il pulsante in un framelayout, impostare il bordo sul pulsante, (con tutto trasparente ma il bordo) e impostare il colore sul framelayout principale – njzk2