2013-06-02 9 views
6

Come si aggiunge a livello di programmazione a un bordo su LinearLayout? consente di dire che creiamo questo layout:Aggiungi bordo a LinearLayout a livello di programmazione

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

Allora cosa faccio?

+0

Dovreste accettare la risposta di Sjoerd Van Den Berg. :-) – Alex

risposta

32

Credo che la risposta di cui sopra non è corretta: La domanda chiede specificamente per una versione programmatico per farlo e la prima cosa che si vede è xml. In secondo luogo, facendo in parte XML è nel mio caso quasi mai un'opzione, quindi ecco la risposta corretta:

//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

Come si possono disegnare due colori del Gradiente? –

4

Creat XML chiamato border.xml nella cartella drawable come di seguito:

<?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> 

quindi aggiungere questo per il layout lineare come backgound come questo:

android:background="@drawable/border" 

programmazione

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

MODIFICA:

Dal Jelly Bean, questo metodo (setBackgroundDrawable è stato deprecato), in modo tuttavia è necessario utilizzare questo:

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

speranza questo aiuto.

+0

L'ho provato. Non funziona. Anche eclipse dice che setBackgroundDrawable() è deprecato. –

+0

Funziona, Eclipse ha appena detto che è deprecato perché esiste un altro metodo da Jelly Bean che è: TitleLayout.setBackground (getResources(). GetDrawable (R.drawable.border)); –

+0

Stavo usando "btn_tod.setBackgroundDrawable (new ColorDrawable (R.Drawable.nobottom));" con effetti strani, la soluzione di MDMalik ha funzionato "btn_tod.setBackgroundDrawable (getResources(). getDrawable (R.drawable.nobottom));". Non capisco perché "nuovo ColorDrawable" non funzioni mentre "getDrawable" funziona. Sembra che "nuovo ColorDrawable" funzioni per i colori personalizzati ma non per i drawable XML. –

Problemi correlati