停止视图在相对布局中水平重叠

Posted

技术标签:

【中文标题】停止视图在相对布局中水平重叠【英文标题】:Stop views overlapping horizontally in a relative layout 【发布时间】:2016-04-28 15:57:40 【问题描述】:

作为日历的一部分,我有两个视图,一个日视图和一个事件视图。我希望我的事件以宽度填充日视图(这正在工作),但是当我在相同的位置/时间添加另一个时,我希望它们分割宽度......我正在使用 java.util 动态添加我的事件。有没有我可以使用的属性使视图不重叠?

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:id="@+id/dayView"
android:layout_
android:layout_
android:background="@drawable/day_view">

</RelativeLayout>

.

<?xml version="1.0" encoding="utf-8"?>
<ie.test.calendar.CalendarEventView
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="horizontal"
android:id="@+id/eventView"
android:background="@drawable/event_view"
android:layout_
android:layout_>

    <TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/eventTextView"
    android:layout_
    android:layout_
    android:paddingTop="3dp"
    android:paddingBottom="5dp"
    android:paddingLeft="5dp"
    android:paddingRight="3dp"
    android:textAppearance="@android:style/TextAppearance.Medium"
    android:textColor="@android:color/white"/>

</ie.test.calendar.CalendarEventView>

【问题讨论】:

【参考方案1】:

我认为您需要使用 Linier 布局作为水平方向的父视图。并且还使用宽度的重量概念。它将根据子数量划分您的父视图

【讨论】:

【参考方案2】:

看看RelativeLayout.LayoutParams

您可以在运行时使用 ID 设置规则。

layoutparams.addRule(RelativeLayout.ALIGN_RIGHT, R.id.id1)

虽然我认为使用LinearLayout 会简单得多。

【讨论】:

所以我必须在插入第一个事件时知道有一个事件要添加到同一位置??然后为它腾出空间?

以上是关于停止视图在相对布局中水平重叠的主要内容,如果未能解决你的问题,请参考以下文章

Qt布局和拆分器的区别

Android相对布局放置问题

如何在屏幕底部对齐视图,但也在相对布局中的其他视图下方对齐

盒子在浏览器中水平垂直居中

框架和相对布局之间的区别?

线性布局android中的重叠视图