2014-12-15 28 views
7

To circle.xmlJak programowo zmienić szerokość obrysu kształtu w systemie Android?

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
     android:shape="oval"> 
    <solid android:color="#00000000"/> 
    <padding android:left="30dp" android:top="30dp" 
      android:right="30dp" android:bottom="30dp" /> 
    <stroke android:color="#439CC8" android:width="7dp" /> 
</shape> 

To jest mój kod:

textview.setBackgroundResource(R.drawable.circle); 

Chcę zmienić grubość obrysu w moim kodu java. Jak mogę to zmienić programowo?

Odpowiedz

7

może trzeba utworzyć go programowo

ShapeDrawable circle = new ShapeDrawable(new OvalShape()); 

trzeba ustawić właściwości po tym (wyściółka, kolor, etc), a następnie zmienić jego obrys

circle.getPaint().setStrokeWidth(12); 

następnie ustawić go jako tło dla widoku

textview.setBackgroundDrawable(circle); 
+0

myView --- co to za zmienna? –

+1

niezależnie od tego, jaki próbujesz ustawić tło. textview w twoim przypadku. źle zaktualizować moją odpowiedź – browep

+0

Moja aplikacja zatrzymała tę linię: ShapeDrawable myCircle = (ShapeDrawable) getResources(). getDrawable (R.drawable.circle); –

8

Czy tak:

1) Pobierz TextView stosując zwykłe findViewById():

TextView textView = (TextView) rootView.findViewById(R.id.resourceName); 

2) Pobierz Drawable z TextView użyciu getBackground() i oddać go do GradientDrawable:

GradientDrawable backgroundGradient = (GradientDrawable) textView.getBackground(); 

3) stosuje się go udar korzystając setStroke() metoda (podaj szerokość w pikselach i kolorze):

backgroundGradient.setStroke(5, Color.BLACK); 

Cały kod:

TextView textView = (TextView) rootView.findViewById(R.id.resourceName); 
GradientDrawable backgroundGradient = (GradientDrawable) textView.getBackground(); 
backgroundGradient.setStroke(5, Color.BLACK);