2012-05-02 10 views
51

Czy możesz podać mi bardzo prosty przykład programowego dodawania widoku podrzędnego do RelativeLayout na danej pozycji?Jak dodać program viewmattically do RelativeLayout?

Na przykład, aby odzwierciedlać następujące XML:

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"> 

<TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentTop="true" 
    android:layout_marginLeft="107dp" 
    android:layout_marginTop="103dp" 
    android:text="Large Text" 
    android:textAppearance="?android:attr/textAppearanceLarge" /> 

ja nie rozumiem, jak stworzyć odpowiednią instancję RelativeLayout.LayoutParams.

Odpowiedz

91

Herezje przykład, aby zacząć grę, należy wypełnić resztę jak zastosowanie:

TextView tv = new TextView(mContext); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
    ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
params.leftMargin = 107 
... 
mRelativeLayout.addView(tv, params); 

Docs dla RelativeLayout.LayoutParams i konstruktorzy są here

+0

Niestety, to samo pytanie: gdzie dowiedziałeś się o konstruktorze "RelativeLayout.LayoutParams" bez "Kontekstu" jako pierwszego parametru? –

+1

@SuzanCioc Zobacz edycję powyżej – JRaymond

+0

Ah, przepraszam, myślałem, że szerokość i wysokość powinny być dokładnymi wartościami. –

27

Po pierwsze, należy podać identyfikator do listy RelativeLayout pozwala powiedzieć relativeLayout1.

RelativeLayout mainLayout = (RelativeLayout) findViewById(R.id.relativeLayout1); 
TextView mTextView = new TextView(context); 
mTextView.setText("Dynamic TextView"); 
mTextView.setId(111); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE); 
params.addRule(RelativeLayout.ALIGN_PARENT_TOP, RelativeLayout.TRUE); 
mainLayout.addView(mTextView, params); 
+0

Gdzie jest opisany konstruktor 'RelativeLayout.LayoutParams'? Nie ma go tutaj http://developer.android.com/reference/android/widget/RelativeLayout.html, ponieważ wszystkie prototypy mają jako pierwszy parametr "Kontekst". –

+1

Powinieneś sprawdzić tutaj http://developer.android.com/reference/android/widget/RelativeLayout.LayoutParams.html Jest to RelativeLayout.LayoutParams (int w, int h) –

+0

Co to jest 'R.id.relativeLayout1' odnosi się do? – Si8

Powiązane problemy