Макет \ layout_main.xml

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

    <RelativeLayout
        android:id="@+id/rR2MessageBubble"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background="@drawable/drawable_sky_background_frame">

    </RelativeLayout>

</RelativeLayout>

Layout \ layout_component.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="50dp"
    android:layout_height="50dp"
    android:orientation="vertical"
    android:background="@drawable/frame">


    <TextView
        android:id="@+id/txtViewTest"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:text="Hello!"
        android:gravity="center" />

</LinearLayout>

Вытяжной \ frame.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" >

    <solid android:color="#FF07DD43" />

    <corners android:bottomRightRadius="3dp" 
                android:bottomLeftRadius="3dp" 
                android:topLeftRadius="3dp" 
                android:topRightRadius="3dp"/>

</shape>

MainActivity.java

![package com.kore.layoutdemo;

import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RelativeLayout;
import android.widget.TextView;

/**
 * @author ayadav
 *
 */
public class MainActivity extends Activity {


 @Override
 protected void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

    setContentView(R.layout.layout_main);

    RelativeLayout rR2MessageBubble = (RelativeLayout)findViewById(R.id.rR2MessageBubble);

    RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) rR2MessageBubble.getLayoutParams();

    //View-1
    View view1 = ((LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.layout_component, null);

    rR2MessageBubble.addView(view1);

    //View-2
    View view2 = ((LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.layout_component, null);

    TextView txtViewTest = (TextView) view2.findViewById(R.id.txtViewTest);
    txtViewTest.setText("World");

    //params.addRule(RelativeLayout.RIGHT_OF, view1.getId());
    params.addRule(RelativeLayout.ALIGN_PARENT_RIGHT, 1);
    view2.setLayoutParams(params);

    rR2MessageBubble.addView(view2);

 }

}

Вывод

enter image description here

Требование Все, что я хочу добавить несколько экземпляров layout_component.xml в layout_main.xml, поэтому вместо отрицательного голосования, пожалуйста, предложите мне способ, с помощью которого я могу этого добиться ... спасибо

-4
Amit Yadav 2 Май 2014 в 16:56

2 ответа

Лучший ответ

Вы допустили небольшую ошибку, приятель, вы назначаете неправильный LayoutParam для view2.

Заменить ,

RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) rR2MessageBubble.getLayoutParams();

С участием

 RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(100,100); //or whatever width, height as per your need.

Надеюсь, вы понимаете свою ошибку.

2
Spring Breaker 2 Май 2014 в 13:24

Вероятно, потому что вы установили текст на «Мир».

TextView txtViewTest = (TextView) view2.findViewById(R.id.txtViewTest);
txtViewTest.setText("World");
2
markieo 2 Май 2014 в 12:57