Pytanie w sprawie android-layout, android-relativelayout, android – Jak dodać widok programowo do RelativeLayout?

56

Czy możesz podać mi bardzo prosty przykład programowego dodawania widoku dziecka doRelativeLayout na danym stanowisku?

Na przykład, aby odzwierciedlić następujący kod XML:

<code><?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" />
</code>

Nie rozumiem, jak stworzyć odpowiedniRelativeLayout.LayoutParams instancja.

Twoja odpowiedź

2   odpowiedź
96

<code>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);
</code>

Dokumenty dla RelativeLayout.LayoutParams i konstruktorów sątutaj

@SuzanCioc Zobacz edycję powyżej JRaymond
Ach, przepraszam, myślę, że szerokość i wysokość powinny być dokładnymi wartościami. Suzan Cioc
Przepraszam, to samo pytanie: gdzie się dowiedziałeśRelativeLayout.LayoutParams konstruktor bezContext jako pierwszy parametr? Suzan Cioc
Szukałem tego! Chociaż wydaje mi się, że mój pogląd nie stosuje params ... D4ddy-LiLd4rk
28

powinieneś podać id do RelativeLayout, powiedzmy relativeLayout1.

<code>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);
</code>
Gdzie jestRelativeLayout.LayoutParams konstruktor opisany? Go tu nie madeveloper.android.com/reference/android/widget/… ponieważ wszystkie prototypy mająContext jako pierwszy parametr. Suzan Cioc
Co jestR.id.relativeLayout1 odnosi się do? Si8
@ SiKni8 Jest to identyfikator układu rodzica TextView, układ względny, który jest już w pliku xml. joao2fast4u
Powinieneś sprawdzić tutajdeveloper.android.com/reference/android/widget/…  Jest to RelativeLayout.LayoutParams (int w, int h) Onuray Şahin

Powiązane pytania