Android按钮被切断(LinearLayout水平)

时间:2016-02-03 12:56:03

标签: android android-layout

在我的应用程序中,我正在调用API以获取具有某些信息(地址,电话号码等)的人员列表。在每个电话号码下,我以编程方式创建3个按钮(添加到联系人,编辑和呼叫)。问题是,最后一个按钮被切断(小屏幕)。我正在使用线性布局水平。

有没有办法控制屏幕大小,如果需要,可以将最后一个按钮放到第二行?当我将屏幕旋转到横向时,我有足够的空间,因此按钮应保持在一行。

现在,我正在使用带有可见滚动条的horizontalScrollView。它有效,但我对它不是很满意。

感谢您的帮助。

4 个答案:

答案 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布局的新变体:

  • layout-w200dp / listitem.xml:布局,一行有3个按钮
  • layout / listitem.xml:布局与单独行上的按钮

当前可用宽度小于200dp时,Android将选择多行布局。 (请注意,您仍然可以将200调整为不同的值)

或者您也可以使用替换性线性布局来为您进行包装:Flowlayout

答案 3 :(得分:0)

实现这一目标可能更复杂,但最好的方法是使用一些基于适配器的解决方案:

  1. GridView - 这是旧解决方案,最好是第二次
  2. RecyclerView根据您的需求设置StaggeredLayoutManager
  3. 简单的解决方案是使用android:layout_weight="1"android:layout_width="0dp“作为LinearLayout中每个按钮的参数,但它们将适合整个屏幕,并采用相同的宽度百分比,如果屏幕太小,按钮可能会被切断。