java - 动态添加按钮到滚动视图
问题描述
我想要一些关于动态添加按钮到ScrollView
. 我已经得到了它,LinearLayout
但显然我只能在它们不再出现在屏幕上之前添加这么多按钮。我的代码在下面,附有其当前状态的图像。
我尝试在代码中更改每次出现的LinearLayout
withScrollView
但是当我运行它时,我得到一个错误,说明了一些类似ScrollViews can only have 1 direct child
.
我不知道如何使它工作,所以如果有人能给我一些关于如何做的指导,我将非常感激。
我的 XML 代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
<LinearLayout
android:id="@+id/mainLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_below="@id/imageTextView"
android:layout_centerHorizontal="true">
</LinearLayout>
</RelativeLayout>
我的 Java 代码(我在其中动态创建按钮):
public class Main5Activity extends AppCompatActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main5);
LinearLayout layout = (LinearLayout) findViewById(R.id.mainLayout);
for (int i = 0; i < 6; i++)
{
LinearLayout row = new LinearLayout(this);
row.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
for (int j = 0; j < 4; j++)
{
final Button btnTag = new Button(this);
btnTag.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
btnTag.setText("" + (j + 1 + (i * 4)));
btnTag.setId(j + 1 + (i * 4));
row.addView(btnTag);
}
layout.addView(row);
}
}
}
当前布局的图像。
解决方案
YesScrollView
只能有 1 个孩子,通常是ViewGroup
like LinearLayout
,RelativeLayout
等。你需要用 a 包裹你LinearLayout
的ScrollView
,像这样:
<ScrollView>
<LinearLayout
android:id="@+id/mainLayout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_below="@id/imageTextView"
android:layout_centerHorizontal="true"/>
</ScrollView>
或者,如果它只有一个孩子,您可以将您的最顶层更改RelativeLayout
为。ScrollView
推荐阅读
- python - 在 Tensorflow Keras 模型中手动计算 tanh 导致 Nan
- node.js - Spotify 授权代码工作流导致“error=state_mismatch”?
- java - 无法自动接线。找不到“JobRepositoryTestUtils”类型的 bean。添加了 SpringBatchTest 注解
- google-apps-script - 根据提取的电子邮件主题中的子字符串自动创建 Gmail 子标签(Google 脚本)
- redis - 使用文件内容作为redis键的最佳实践?
- postgresql - 如何在 Windows 10 64 位上将 libpq.dll 升级到最新版本?
- php - Symfony\Component\Debug\Exception\FatalThrowableError 在 laravel 中调用 bool 上的成员函数 get()?
- ruby - 在 Go 中实现 Ruby 的 Digest::UUID.uuid_from_hash
- javascript - Discord.js 响应抛出错误的代码
- javascript - 将拼写检查属性设置为 false 不会删除红色下划线