我有图像和文本元素的视图。其中一些是动态的,所以我想将它们分组到一个“容器”(线性布局可能?),所以当它们中的一些不存在时,下面的元素可能有20dp的边距,而不是一个大的空白区域。
这是布局:
我的代码: (我想分组:phoneTitleTextView,homePhoneTextView和homeTitleTextView)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
<ImageView
android:id="@+id/largeImageView"
android:layout_width="120dp"
android:layout_height="120dp"
android:scaleType="centerCrop" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/name"
android:id="@+id/contactTitleTextView"
android:layout_toRightOf="@+id/largeImageView"
android:layout_alignParentTop="true"
android:layout_marginLeft="10dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Text"
android:id="@+id/contactNameTextView"
android:layout_below="@+id/contactTitleTextView"
android:layout_toRightOf="@+id/largeImageView"
android:layout_toEndOf="@+id/largeImageView"
android:layout_marginLeft="10dp"/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/company"
android:id="@+id/companyTitleTextView"
android:layout_above="@+id/companyTextView"
android:layout_alignLeft="@+id/contactNameTextView" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Text"
android:id="@+id/companyTextView"
android:layout_alignBottom="@+id/largeImageView"
android:layout_alignLeft="@+id/contactNameTextView"
android:layout_alignStart="@+id/contactNameTextView" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/phone"
android:id="@+id/phoneTitleTextView"
android:layout_below="@+id/largeImageView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="20dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Text"
android:id="@+id/homePhoneTextView"
android:layout_below="@+id/phoneTitleTextView"
android:layout_alignParentLeft="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="@string/home"
android:id="@+id/homeTitleTextView"
android:layout_alignTop="@+id/homePhoneTextView"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/address"
android:id="@+id/addressTitleTextView"
android:layout_below="@+id/homePhoneTextView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="20dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Text"
android:id="@+id/address1TextView"
android:layout_below="@+id/addressTitleTextView"
android:layout_alignParentLeft="true"
/>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Text"
android:id="@+id/address2TextView"
android:layout_below="@+id/address1TextView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/birthday"
android:id="@+id/birthdayTitleTextView"
android:layout_below="@+id/address2TextView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="20dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Text"
android:id="@+id/birthdayTextView"
android:layout_below="@+id/birthdayTitleTextView"
android:layout_alignParentLeft="true" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceMedium"
android:text="@string/email"
android:id="@+id/emailTitleTextView"
android:layout_below="@+id/birthdayTextView"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="20dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textAppearance="?android:attr/textAppearanceLarge"
android:text="Text"
android:id="@+id/emailTextView"
android:layout_below="@+id/emailTitleTextView"
android:layout_alignParentLeft="true" />
<ImageView
android:id="@+id/starImageView"
android:layout_width="50dp"
android:layout_height="50dp"
android:scaleType="centerCrop"
android:layout_alignTop="@+id/contactTitleTextView"
android:layout_alignRight="@+id/homeTitleTextView"
android:layout_alignEnd="@+id/homeTitleTextView" />
</RelativeLayout>
当我尝试使用relativelayout时,我的所有元素都会混合在一起。
提前致谢!
答案 0 :(得分:2)
使用RelativeLayout
您必须指定每个View relative 的位置。例如,要将phone_02_title
放在phone_01_title
下方,您可以使用below
这样的属性:
<RelativeLayout
...>
<TextView
android:id="@+id/phone_01_title"
...
/>
<TextView
android:id="@+id/phone_02_title"
android:layout_below="@+id/phone_01_title"
...
/>
...
</RelativeLayout>
无论如何,如果您想要的是在&#34;电话&#34;之间设置一个保证金。和&#34;地址&#34;小组,我建议你使用android:paddingBottom=""
。这会在列表下方放置一个空格,与该组的行数无关。
如果你想留下一个&#34;免费空间&#34;对于缺失的视图(让我们说你有2/5个手机)我宁愿为容器和行设置一个固定的高度。例如,每个TextView的高度为40dp,容器为200dp(5x40 dp)。
最后但同样重要的是,我还建议您使用&#34; setVisibility&#34;对于视图而不是动态添加它们,前提是您知道它们将在1到5之间。在XML布局中设置所有5个视图,然后以编程方式使用view.setVisibility(View.VISIBLE)
和view.setVisibility(View.INVISIBLE)
来显示/隐藏他们的内容(但不是他们的身高)。
希望这对你有所帮助!