问题:我想澄清一个非常基本的布局问题。我一直在这里呆了2天无济于事。我只是想成功将一个RelativeLayout嵌套在LinearLayout中并控制其定位。为此,我创建了2个布局:1个布局显示在左侧和右侧。布局故障:在LinearLayout中嵌套RelativeLayout
我收到以下输出: 您可以看到第二个视图应显示在右侧,但不是。我曾尝试layout_gravity,但它不工作。
以下是布局: 左:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginLeft="8dp"
android:layout_marginTop="8dp"
android:background="@drawable/message_view_border">
<!--The message text-->
<TextView
android:id="@+id/message_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"/>
<!--the timestamp-->
<TextView
android:id="@+id/time_stamp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/message_content"
android:textStyle="bold"/>
</RelativeLayout>
对于右:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:background="@drawable/message_view_border"
android:layout_gravity="right"
android:gravity="right"
android:layout_marginRight="8dp"
android:layout_marginTop="8dp">
<!--The message text-->
<TextView
android:id="@+id/message_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textStyle="bold"/>
<!--the timestamp-->
<TextView
android:id="@+id/time_stamp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/message_content"
android:textStyle="bold"/>
</RelativeLayout>
这里是一个的工作方案中的活动:
package com.example.testapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.TextView;
public class Activity1 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_1);
//Get handle to the root view's child. i.e, FrameLayout
ViewGroup viewGroup = (ViewGroup) ((ViewGroup) this
.findViewById(android.R.id.content)).getChildAt(0);
LayoutInflater inflater = LayoutInflater.from(this);
LinearLayout linearLayout = (LinearLayout) viewGroup.findViewById(R.id.container_linear_layout);
View message_receiver = inflater.inflate(R.layout.layout_chat_message_receiver, viewGroup, false);
TextView received_content = (TextView)message_receiver.findViewById(R.id.message_content);
received_content.setText("okay");
linearLayout.addView(message_receiver);
View message_sender = inflater.inflate(R.layout.layout_chat_message_sender, viewGroup, false);
TextView sent_content = (TextView)message_sender.findViewById(R.id.message_content);
sent_content.setText("okay");
linearLayout.addView(message_sender);
}
}
项目供您参考:https://github.com/mankum93/TestApp1
注:我知道,我也问过类似的问题,没有答案。我再次问这个问题是因为在问题中有人质疑我用来填充动态视图列表的RecyclerView。这可能是没有人能够找出问题根源的原因。但是,既然这个问题是一个根本问题,即使没有RecyclerView,我认为它也应该是另一个机会。
我搜索了几个论坛,文档和SO帖子,但无法解决此问题。
编辑1:我能看到混乱这里来源: 这主要活动布局文件:
<FrameLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/container_linear_layout">
</LinearLayout>
<!--Floating view to send messages layout-->
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom">
<EditText
android:id="@+id/typed_message"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"/>
<Button
android:id="@+id/send_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="SEND"
android:layout_gravity="bottom"
android:layout_weight="0"/>
</LinearLayout>
</FrameLayout>
无需在屏幕截图中使用的亵渎。这是非常不专业的。 –
@ Tanis.7x对不起。编辑。 –
你的LinearLayout具有什么样的定向,是否有你用Java而不是xml添加布局的原因? – codeMagic