2017-07-04 16 views
0

今、私はRecyclerViewと複数のCardViewを使ってアイテムを表示しています。Androidの複数の画像と動的な画像の整列

私のCardViewには、いくつかのImageViewsを追加するRelativeLayoutがあります(この場合は3ですが、それ以上の場合もあります)。

私の各アイテムには表示する画像のリストがあります。#item1にはFacebook、Twitter、Youtubeがありますが、#item2にはFacebookとYoutubeの画像があります。

イメージをどのように整列する必要がありますか? Twitterの画像を削除するだけの場合は、自分のFacebook画像のlayout_toLeftOfをYoutube画像に更新する必要があります。それは良いでしょう https://i.stack.imgur.com/uJZTi.png

<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:card_view="http://schemas.android.com/apk/res-auto" 
android:id="@+id/card_view" 
android:layout_width="match_parent" 
android:layout_height="wrap_content" 
android:layout_margin="5dp" 
card_view:cardCornerRadius="4dp"> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="@dimen/card_height" 
     android:orientation="vertical"> 

     <FrameLayout 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:layout_gravity="center_horizontal"> 

      <ImageView 
       android:id="@+id/coverImageView" 
       android:layout_width="match_parent" 
       android:layout_height="match_parent" 
       android:layout_gravity="center" 
       android:scaleType="centerCrop" 
       /> 

      <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_gravity="end|top"> 
       <ImageView android:background="@null" 
        android:id="@+id/facebook" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/facebook_icon" 
        android:layout_toLeftOf="@+id/twitter"/> 
       <ImageView android:background="@null" 
        android:id="@+id/twitter" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/twitter_icon" 
        android:layout_toLeftOf="@+id/youtube"/> 
       <ImageView android:background="@null" 
        android:id="@+id/youtube" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/youtube_icon" 
        android:layout_alignParentRight="true"/> 
      </RelativeLayout> 

      <LinearLayout 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:layout_gravity="left|bottom" 
       android:background="@android:drawable/screen_background_dark_transparent" 
       android:orientation="vertical"> 

       <TextView 
        android:id="@+id/titleTextView" 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:padding="16dp" 
        android:textSize="@dimen/text_size" 
        android:textColor="#FFFFFF" 
        android:textStyle="bold" /> 
      </LinearLayout> 
     </FrameLayout> 
    </LinearLayout> 

答えて

0

私は...私はすべての項目にこの種のロジックを行うべきではありません、それは電源の上になると思う

例の画像この場合はLinearLayoutで作業し、以下のようにandroid:layout_gravity = "end | top"の代わりにlayout_alignParentRightとlayout_alignParentTop = "true"を使用してください:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal" 
       android:layout_alignParentRight="true" 
       android:layout_alignParentTop="true"> 
       <ImageView android:background="@null" 
        android:id="@+id/facebook" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/facebook_icon" 
        android:layout_weight="1"/> 
       <ImageView android:background="@null" 
        android:id="@+id/twitter" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/twitter_icon" 
        android:layout_weight="1"/> 
       <ImageView android:background="@null" 
        android:id="@+id/youtube" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:src="@drawable/youtube_icon" 
        android:layout_weight="1"/> 
      </LinearLayout> 
+0

うん、うまく見える!私はXMLに必要なすべてのImageViewを追加し、JavaでImageViewを削除する必要があります。いくつかの項目はすべての画像を持っていないので... –

+0

あなたはコード内で可視性が「なくなった」か、またはXMLで静的に設定できます。 – Karim

+0

私が言ったように私はLinearLayoutを使用しましたが、アンドロイド:layout_gravity = "end | top"は機能しませんでした。私は他の設定をしました。 Ty –

0

水平方向のLinearLayoutを使用する必要があります。

<LinearLayout 
... 
    android:orientation="horizontal"> 

    //ImageViews in priority order 

</LinearLayout>