Android 高度 wrap_content 与固定比率
Posted
技术标签:
【中文标题】Android 高度 wrap_content 与固定比率【英文标题】:Android height wrap_content with fix ratio 【发布时间】:2019-01-23 08:17:47 【问题描述】:我的XML
文件有一个LinearLayout
,其中包含两个ListView
和android:height="wrap_content"
。但是,当其中一个ListView
的内容过多时,它会推送另一个ListView
并占用它的空间。我该怎么做才能让它在一定高度停止推动?我尝试添加layout-weight
或maxHeight
,但没有帮助。
【问题讨论】:
如果要使用layout-weight
,请尝试将高度设置为match_parent
或0dp
@PriyankVadariya 有趣...match_parent
和 0dp 有什么区别?笔记本电脑不在我身边,所以我无法对此进行测试。如果你能解释一下就太好了。
【参考方案1】:
如果您希望两个 ListViews
均分相同的金额,只需将它们放入 LinearLayout
。
LinearLayout
将拥有weightSum=2
属性,而ListViews
将拥有,具体取决于LinearLayout orientation property
:
如果 vertical
-> ListViews
将有 android:height="0dp"
和 layout-weight=1
如果 horizontal
-> ListViews
将有 android:width="0dp"
和 layout-weight=1
【讨论】:
嗨,我希望他们随意扩展,但在某些时候停止扩展。android:height="0dp"
将根据体重固定它们的高度。【参考方案2】:
我通过编程解决了这个问题。似乎XML
没有对动态高度进行太多控制。我在ListView
中添加了onLayoutChangedListener
,以检测高度变化并在侦听器中添加高度控制逻辑。
【讨论】:
【参考方案3】:试试这个:
<LinearLayout
android:layout_
android:layout_
android:background="@drawable/green_bg_duplicate"
android:gravity="center"
android:orientation="vertical"
android:weightSum="2">
<RecyclerView
android:layout_
android:layout_
android:weightSum="1" />
<RecyclerView
android:layout_
android:layout_
android:weightSum="1" />
</LinearLayout>
【讨论】:
以上是关于Android 高度 wrap_content 与固定比率的主要内容,如果未能解决你的问题,请参考以下文章
android解决Viewpager设置高度为wrap_content无效的方法
Android中LinearLayout或ListView的android:layout_width="wrap_content"如何限制最高高度