2016-07-31 13 views
2

私は画像とテキストの要素を持つビューを持っています。それらの中には動的なものがありますので、それらを "コンテナ"(線形レイアウトかもしれませんか?)の中にグループ化したいので、それらのうちのいくつかがない場合、以下の要素は大きな空白の代わりに20dpのマージンを持つことができます。 Androidのレイアウト:グループの動的要素

この

はレイアウトです:

image layout

マイコード: (私はグループにしたい:phoneTitleTextView、homePhoneTextViewとhomeTitleTextView)私はrelativelayoutでそれをやろう

<?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> 

すべての要素が混ざり合っています。

ありがとうございます!

+0

あなたはlinearlayoutについて言及しましたか? – wanpanman

答えて

2

RelativeLayoutを使用すると、各ビューの相対位置の位置を別に指定する必要があります。たとえば、phone_01_title以下phone_02_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> 

とにかくされて、私はあなたがandroid:paddingBottom=""を使用することをお勧め。これにより、グループの行数に関係なく、リストの下に空白が配置されます。

不足しているビューの空き領域を残したい場合(2/5の電話があるとします)、コンテナと行の固定高さを設定したいと思います。たとえば、各TextViewの高さは40dp、コンテナは200dp(5x40 dp)です。

最後に、ビューに「setVisibility」を使用し、1から5の間であることがわかっていれば、それらを動的に追加しないことをお勧めします。XMLレイアウトで5つのビューすべてを設定し、プログラムでは、内容を表示/非表示にするにはview.setVisibility(View.VISIBLE)view.setVisibility(View.INVISIBLE)を使用します(ただし高さは表示されません)。

このうちのいずれかがお役に立てば幸いです。

+1

ありがとう!!私の問題を修正し、SetVisibilityのアドバイスをありがとう、私はそれを使用します! – emboole

+1

非常にうれしい私は助けることができる:) – josemigallas