大家好,我正在尝试在 Android 上显示 3 到 X 按钮。
这个想法是始终从 3 个按钮开始,每个按钮占据屏幕尺寸(宽度)的 33% 并且能够滚动水平通过项目。
此外,这些项目将以编程方式添加到视图中。
我尝试将 LinearLaout 水平放置在 HorizontalScrollView 中。
然后将child添加到线性布局中。但项目会调整大小并且不会滚动。
这是正确的方法吗?或者有人知道如何制作吗?
类.java
HomeCircledButton button = HomeCircledButton_.build(this);
button.title.setText(sc.get(i).getLabel());
LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 0.33f));
homeButtonsLL.addView(button);
布局.xml
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center"
android:weightSum="1.0"
android:id="@+id/home_buttons_ll">
</LinearLayout>
</HorizontalScrollView>
我还尝试创建 XML 中已有的按钮并以编程方式隐藏它们 (View.GONE),但它们只是调整大小
如果您动态设置大小并且子视图数量未知,那么weight
方法不太可行。相反,获取屏幕的宽度,并根据该宽度设置按钮的宽度。还,LinearLayout.LayoutParams(0, LinearLayout.LayoutParams.MATCH_PARENT, 0.33f));
您的代码中的这一行将不会按您的预期工作。您需要将参数设置为按钮才能使其工作。
你可以尝试这样的事情,
HomeCircledButton button = HomeCircledButton_.build(this);
button.title.setText(sc.get(i).getLabel());
//divide the screen width by 3
int buttonWidth = getScreenWidth() / 3;
LinearLayout.LayoutParams buttonparams= new LinearLayout.LayoutParams(buttonWidth, LinearLayout.LayoutParams.MATCH_PARENT);
button.setLayoutParams(buttonparams);
homeButtonsLL.addView(button);
...
private int getScreenWidth( ) {
DisplayMetrics displayMetrics = new DisplayMetrics();
int width;
getWindowManager().getDefaultDisplay()
.getMetrics(displayMetrics);
width = displayMetrics.widthPixels;
return width;
}
并且您不必在 xml 中设置权重总和,
<HorizontalScrollView
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:orientation="horizontal"
android:gravity="center"
android:id="@+id/home_buttons_ll">
</LinearLayout>
</HorizontalScrollView>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)