Ich bin auf der Suche nach einer Möglichkeit, einen Rand für entweder Textansicht oder eine Schaltfläche programmgesteuert zu setzen, ohne die Methode setBackgroundResource zu verwenden.
Das Ziel, das ich hier zu erreichen versuche, ist, die Hintergrundfarbe dynamisch zu ändern, jedoch mit einem festen Rand. Wenn ich die setBackgroundResource-Methode für den Hintergrundrand verwende, bleibt der Rand nach einer programmatischen Änderung der Hintergrundfarbe nicht erhalten.
Ein einfaches Beispiel, wie dies erreicht werden konnte:
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);
}
}
Ich denke, das wird dir helfen.
<?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" />