2013-06-02 19 views
6

Programowalnie programowo granicy do LinearLayout? Powiedzmy tworzymy ten układ:Programowo dodaj obramowanie do LinearLayout

LinearLayout TitleLayout = new LinearLayout(getApplicationContext()); 
TitleLayout.setOrientation(LinearLayout.HORIZONTAL); 

Więc co mam zrobić?

+0

Należy przyjąć odpowiedź Sjoerd van den Berga. :-) – Alex

Odpowiedz

32

Uważam, że odpowiedź nie jest poprawna powyżej: Pytanie prosi specjalnie dla wersji programowy to zrobić i pierwszą rzeczą, jaką można zobaczyć jest xml. drugie, robi częściowo XML jest w moim przypadku prawie nigdy opcją, więc tutaj jest prawidłowa odpowiedź:

//use a GradientDrawable with only one color set, to make it a solid color 
    GradientDrawable border = new GradientDrawable(); 
    border.setColor(0xFFFFFFFF); //white background 
    border.setStroke(1, 0xFF000000); //black border with full opacity 
    if(Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) { 
     TitleLayout.setBackgroundDrawable(border); 
    } else { 
     TitleLayout.setBackground(border); 
    } 
+0

Jak uzyskać dwa kolory gradientu do rysowania? –

4

Creat XML nazywa border.xml w rozciągliwej folderu jak poniżej:

<?xml version="1.0" encoding="utf-8"?> 
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item> 
    <shape android:shape="rectangle"> 
     <solid android:color="#FF0000" /> 
    </shape> 
    </item> 
    <item android:left="5dp" android:right="5dp" android:top="5dp" > 
    <shape android:shape="rectangle"> 
     <solid android:color="#000000" /> 
    </shape> 
    </item>  
</layer-list> 

następnie dodać do układu liniowego jako backgound jak to:

android:background="@drawable/border" 

programowo

TitleLayout.setBackgroundDrawable(getResources().getDrawable(R.drawable.border)) 

EDIT:

Od Jelly Bean, ta metoda (setBackgroundDrawable została zaniechana), jeszcze więc trzeba korzystać z tego jeden:

TitleLayout.setBackground(getResources().getDrawable(R.drawable.border)); 

nadzieję, że to pomaga.

+0

Próbowałem. To nie działa. Również zaćmienie mówi, że setBackgroundDrawable() jest przestarzałe. –

+0

To działa, Eclipse właśnie powiedział, że jest przestarzałe, ponieważ istnieje inna metoda od Jelly Bean, która jest: TitleLayout.setBackground (getResources(). GetDrawable (R.drawable.border)); –

+0

Używałem "btn_tod.setBackgroundDrawable (new ColorDrawable (R.drawable.nobottom));" z dziwnymi efektami, rozwiązanie MDMalik działało "btn_tod.setBackgroundDrawable (getResources(). getDrawable (R.drawable.nobottom));". Nie rozumiem, dlaczego "nowy ColorDrawable" nie działa, gdy działa "getDrawable". Wygląda na to, że "nowy ColorDrawable" działa dla niestandardowych kolorów, ale nie dla rysunków XML. –

Powiązane problemy