【问题标题】:Is it possible to reverse the order of views being laid out in a vertical LinearLayout?是否可以反转在垂直 LinearLayout 中布局的视图顺序?
【发布时间】:2017-08-02 10:11:42
【问题描述】:

默认情况下,垂直 LinearLayout 中的视图是从上到下进行测量和布局的,就像水平视图中从左到右一样。

通常,如果我想要一个从下到上测量其子级的布局,我通常使用RelativeLayout,每个子级都有一个id,而底部视图的layout_alignParentBottom 设置为true,其余的都有“layout_above”设置为它们下方的视图:

<RelativeLayout>
 <View android:id="@+id/bottomView android:layout_alignParentBottom="true" />

 <View android:id="@+id/secondView android:layout_above="@+id/bottomView " />

 <View android:id="@+id/thirdView android:layout_above="@+id/secondView " />

 ...
</RelativeLayout

但这设置起来很烦人,如果添加到另一个布局中可能会出现问题。

是否有可能在 LinearLayout 上出现这种行为?唯一找到的就是LayoutDirection,不过这个好像属于RTL方向(水平方向),所以不行。

【问题讨论】:

  • 为什么投反对票?我在任何地方都看不到这个问题。
  • 您是否尝试过以编程方式将视图添加到线性布局?如果你这样做,你可以指定它们放置的位置
  • 考虑依赖LinearLayoutManager,然后只需将reverse值设置为true stackoverflow.com/questions/27727354/…
  • @JavierVentajasHernández 这有什么帮助?它们仍然会从上到下放置,因此如果我删除最上面的一个,所有其他内容都会在内容向上移动时取而代之。在我想要的情况下,当我删除底部的视图时,所有视图都会向下移动以填充其空间。
  • @Alexander 有可能,但与 XML 相比很难管理。

标签: android android-layout android-linearlayout


【解决方案1】:

只需为您的 LinearLayout 设置 android:gravity="bottom"。

【讨论】:

  • 是的,忘了这个。可悲的是,它只适用于 POC,而不适用于我目前拥有的复杂布局。还是谢谢。
  • 非常有趣,你能给我们举个例子吗?为什么这不起作用?
  • 太晚了。我改变了很多,因为我没有按照我想要的方式使用它,所以我选择了另一种方式来展示它。
【解决方案2】:

如果你想从下到上获取子元素,你可以像这样使用线性布局:

  LinearLayout layout = setupLayout();
int count = layout.getChildCount();
View v = null;
int i=count;
while(i!=0) {
    v = layout.getChildAt(i);
    //do something with your child element
    i--;
}

【讨论】:

  • 首先你会在第一次循环迭代中得到null,其次,这不是OP在问什么
  • 不是我问的。我不需要遍历孩子。我希望 LinearLayout 的行为方向相反。
猜你喜欢
  • 1970-01-01
  • 2012-05-14
  • 2015-01-05
  • 2019-03-03
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多