在我的应用程序中,我正在调用API以获取具有某些信息(地址,电话号码等)的人员列表。在每个电话号码下,我以编程方式创建3个按钮(添加到联系人,编辑和呼叫)。问题是,最后一个按钮被切断(小屏幕)。我正在使用线性布局水平。
有没有办法控制屏幕大小,如果需要,可以将最后一个按钮放到第二行?当我将屏幕旋转到横向时,我有足够的空间,因此按钮应保持在一行。
现在,我正在使用带有可见滚动条的horizontalScrollView
。它有效,但我对它不是很满意。
感谢您的帮助。
答案 0 :(得分:3)
我不确定你是否能用LinearLayout做到这一点。但是你可以使用FlowLayout来做到这一点。请检查此链接:https://github.com/ultimate-deej/FlowLayout-for-Android。
如果屏幕上没有空格,此布局会将按钮移动到下一行。
答案 1 :(得分:2)
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weight="1" />
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:weight="1" />
</LinearLayout>
权重属性会自动调整按钮大小
确保将宽度设置为与所有按钮的父级相匹配。
答案 2 :(得分:1)
最好为较小的屏幕截图创建listitem布局的新变体:
当前可用宽度小于200dp时,Android将选择多行布局。 (请注意,您仍然可以将200调整为不同的值)
或者您也可以使用替换性线性布局来为您进行包装:Flowlayout
答案 3 :(得分:0)
实现这一目标可能更复杂,但最好的方法是使用一些基于适配器的解决方案:
RecyclerView
根据您的需求设置StaggeredLayoutManager
简单的解决方案是使用android:layout_weight="1"
和android:layout_width="0dp
“作为LinearLayout
中每个按钮的参数,但它们将适合整个屏幕,并采用相同的宽度百分比,如果屏幕太小,按钮可能会被切断。