Ihre Frage ist nicht richtig, aber ich werde es auf zwei verschiedene Arten beantworten
Erstens, wenn das Linearlayout Sie hinzufügen möchten, in einer anderen XML-Datei ist, dann können Sie die XML-Datei aufblasen und fügen Sie es Eltern Linearlayout in Ihrer Aktivitätsklasse wie diese
Button testMessageButton = (Button) findViewById(R.id.TestMessageButton);
testMessageButton.setOnClickListener(new View.OnClickListener(){
public void onClick(View view){
LinearLayout msgLayout = (LinearLayout) findViewById(R.id.MessageLayout);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
LayoutInflater vi = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v = vi.inflate(R.layout.message_received, null);
v.setLayoutParams(params);
msgLayout.addView(v);
}
});
ich habe meine Lösung aktualisiert. Ein Teil des Problems ist in Ihrer Layout-Datei
Dies ist die Aktivitätsklasse
import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Button;
import android.widget.LinearLayout;
public class MainActivity extends AppCompatActivity {
private LinearLayout mainLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mainLayout = (LinearLayout)findViewById(R.id.main_layout);
Button addChatButton = (Button)findViewById(R.id.add_chat);
addChatButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
LayoutInflater vi = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
LinearLayout mView = (LinearLayout)vi.inflate(R.layout.test_layout, mainLayout, false);
mView.setLayoutParams(params);
mainLayout.addView(mView);
}
});
}
}
Die XML-Layout-Datei für Aktivitätsklasse
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="com.inducesmile.mylinear.MainActivity">
<Button
android:id="@+id/add_chat"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="80dp"
android:text="@string/add_chat"
android:layout_gravity="center|center_horizontal"/>
</LinearLayout>
Schließlich ist die Layout-Datei, die das Linearlayout enthält seine aufgeblasen und zur Wurzel LinearLayout hinzufügen.
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/ReceivedMessage"
android:background="@android:color/holo_blue_light"
android:visibility="visible">
<ImageView
android:layout_width="0dp"
android:layout_height="wrap_content"
android:src="@mipmap/ic_launcher"
android:id="@+id/ProfilePicture"
android:layout_weight="2" />
<TextView
android:text="@string/message"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:id="@+id/MessageText"
android:layout_weight="7"
android:paddingTop="14dp"
android:paddingBottom="14dp"
android:gravity="center_vertical" />
</LinearLayout>
10 Also, was ist dieser Inflator? Warum hast du das benutzt? –
Weil das übergeordnete LinearLayout ein vertikales ist und nur zum Sortieren verwendet wird. Das horizontale LinearLayout, das ich einfügen möchte, enthält ein Bild und einen Text. Ich habe den Inflator verwendet, weil Sie kein LinearLayout klonen können. – ashjack