Как создать относительные макеты с помощью кода Java? - PullRequest
0 голосов
/ 07 марта 2012

Мне нужно научиться создавать относительные макеты с использованием кода Java вместо кода XML.

например, будет приятно понять, как построить этот XML с помощью кода Java:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >
 <Button
        android:id="@+id/btnButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 1"/>
<Button
        android:id="@+id/btnButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 2"
        android:layout_toRightOf="@+id/btnButton1"/> 
     <Button
        android:id="@+id/btnButton3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button 3"
        android:layout_below="@+id/btnButton1"/>
</RelativeLayout>

Я не могу найти никаких примеров того, как сделать это с помощью кода Java

Пожалуйста, кто-нибудь может помочь мне преобразовать этот макет в код Java? или кто-то может дать мне учебные ссылки, чтобы сделать относительные макеты с Java-кодом?

спасибо

Ответы [ 3 ]

2 голосов
/ 07 марта 2012

Есть множество примеров! Попробуйте этот учебник, он охватывает все элементы, которые вам нужны ... А лучше всего, он дает программные примеры для всех видов макетов, поэтому он также решит будущие вопросы;)

http://mobile.tutsplus.com/tutorials/android/android-user-interface-design-relative-layouts/

1 голос
/ 07 марта 2012
    //you create relative layout dynamically like below:
public class TwoPicksOnEachOther extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // Grabbing the Application context         
        final Context context = getApplication();                   

        RelativeLayout relativeLayout = new RelativeLayout(this);                   

        final ImageView iv = new ImageView(this);         
        iv.setImageResource(R.drawable.fish2);


        RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(     
                RelativeLayout.LayoutParams.FILL_PARENT, 
                RelativeLayout.LayoutParams.FILL_PARENT);
        relativeLayout.addView(iv,lp);        

        // Creating transparent image
        final ImageView iv2 = new ImageView(this);
        iv.setImageResource(R.drawable.ctdeasytwo);
        RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(     
                RelativeLayout.LayoutParams.FILL_PARENT, 
                RelativeLayout.LayoutParams.FILL_PARENT);
        relativeLayout.addView(iv2,lp2);
        setContentView(relativeLayout);

    }        

}
1 голос
/ 07 марта 2012

Надеюсь, этот код поможет вам программно реализовать относительное расположение

RelativeLayout.LayoutParams expandLayoutParams = new RelativeLayout.LayoutParams(
                        RelativeLayout.LayoutParams.WRAP_CONTENT,RelativeLayout.LayoutParams.WRAP_CONTENT);
expandLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM, RelativeLayout.TRUE);
expandLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);
expandLayoutParams.topMargin=7;
expandLayoutParams.rightMargin=7;
expandButton.setLayoutParams(expandLayoutParams);

Еще одна вещь.Код, который вы положили, я не думаю, что представляет интерфейс, который вы хотите реализовать.Чтобы сделать то, что вы хотите, я думаю, что лучше использовать linearlayout с ориентацией, равной горизонтальной, и все кнопки с layout_width = 0dip и layout_weight = 1

...