2017-07-24 78 views
1

我有一个LinearLayout的水平方向,但是当它跨越一行中的4个元素时,它会继续添加水平,我希望它自动更改为下一行,例如:在LinearLayout的下一行添加图像Programatcally - Android

会发生什么: Whta happen:

我想要什么: What I want:

我的代码:

btnAdd.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      countLikesAdd++; 
      removeMessageOrShow(); 
      ImageView iconLike = new ImageView(Register30.this); 
      iconLike.setImageDrawable(getDrawable(R.drawable.musicicon)); 
      LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(140,130); 
      lp.setMargins(5,5,5,5); 
      iconLike.setLayoutParams(lp); 
      relativeLayout.addView(iconLike); 
     } 
    }); 

我的XML:

<ScrollView 
    android:id="@+id/svLikes" 
    android:layout_width="0dp" 
    android:layout_height="0dp" 
    android:layout_marginBottom="60dp" 
    android:layout_marginEnd="14dp" 
    android:layout_marginStart="14dp" 
    android:layout_marginTop="48dp" 
    android:background="#2f3342" 
    android:orientation="vertical" 
    app:layout_constraintBottom_toBottomOf="parent" 
    app:layout_constraintLeft_toLeftOf="parent" 
    app:layout_constraintRight_toRightOf="parent" 
    app:layout_constraintTop_toTopOf="@+id/btnAdd" 
    app:layout_constraintVertical_bias="0.0" 
    tools:layout_constraintBottom_creator="1" 
    tools:layout_constraintLeft_creator="1" 
    tools:layout_constraintRight_creator="1" 
    tools:layout_constraintTop_creator="1"> 
    <LinearLayout 
     android:id="@+id/linearLayout" 
     android:orientation="horizontal" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:padding="5dp" 
     android:paddingEnd="5dp" 
     android:paddingTop="5dp" 
     android:paddingLeft="5dp" 
     android:paddingRight="5dp" 
     > 
    </LinearLayout> 
</ScrollView> 

回答

0

LinearLayout不支持包装到下一行,如果事情不适合的概念。

对于少数固定项目,最好的解决方案可能是在您执行谷歌搜索时使用许多“FlowLayout”库中的一个。

对于大量项目(或您在设计时不知道的项目),可以使用RecyclerViewGridLayoutManager

+0

对。我发现它很好。 Thx回答! – Adolfok3

+2

考虑[FlexboxLayout](https://github.com/google/flexbox-layout) - 它既可以用于少量项目的手动布局,也可以用于RecyclerView。 – ephemient

相关问题