首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用than循环向滚动视图中添加多个LinearLayout

使用than循环向滚动视图中添加多个LinearLayout
EN

Stack Overflow用户
提问于 2019-02-23 09:03:01
回答 2查看 46关注 0票数 0

我想在我的ScrollView中添加多个ScrollView,LinearLayout的数量是根据从MySQL数据库中选择的数据来确定的。但是,似乎不能将多个LinearLayout添加到ScrollView中。

原因可能是:指定的子对象已经有了一个父级。您必须首先对孩子的父级调用removeView()。但我不确定真正的原因。我该如何解决这个问题?下面是我在Android中的代码:

代码语言:javascript
运行
复制
String query = "select * from restaurant";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);

LinearLayout data_big_layout, detail_data_layout;
TextView name, type_area, price_txt;
ImageView restaurant_img;
LinearLayout.LayoutParams restaurant_img_params, data_big_params;

while(rs.next()){
    data_big_layout = new LinearLayout(this);
    data_big_params = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
    LinearLayout.LayoutParams.WRAP_CONTENT);
    data_big_params.setMargins(0,15,0,0);
    data_big_layout.setLayoutParams(data_big_params);
    data_big_layout.setOrientation(LinearLayout.HORIZONTAL);
    data_big_layout.setWeightSum(20);
    data_big_layout.setBackgroundColor(Color.WHITE);
    data_big_layout.setTag(rs.getInt(1));

    detail_data_layout = new LinearLayout(this);
    lparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
    LinearLayout.LayoutParams.WRAP_CONTENT,8.0f);
    detail_data_layout.setLayoutParams(lparams);
    detail_data_layout.setOrientation(LinearLayout.VERTICAL);
    detail_data_layout.setPadding(50,0,0,0);

    lparams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT,
    LinearLayout.LayoutParams.WRAP_CONTENT);
    name = new TextView(this);
    name.setLayoutParams(lparams);
    name.setText(rs.getString(2));
    name.setTextSize(24);
    name.setTypeface(Typeface.DEFAULT_BOLD);

    type_area = new TextView(this);
    type_area.setLayoutParams(lparams);
    type_area.setText(rs.getString(5)+"/"+rs.getString(6));
    type_area.setTextSize(18);

    price_txt = new TextView(this);
    price_txt.setLayoutParams(lparams);
    price_txt.setText(rs.getString(7));
    price_txt.setTextSize(18);

    detail_data_layout.addView(name);
    detail_data_layout.addView(type_area);
    detail_data_layout.addView(price_txt);

    data_big_layout.addView(detail_data_layout);

    restaurant_img = new ImageView(this);
    restaurant_img_params = new LinearLayout.LayoutParams(200,
    300,12.0f);
    restaurant_img.setImageResource(R.drawable.test_restaurant);
    restaurant_img.setPadding(0,0,50,0);

    data_big_layout.addView(restaurant_img, restaurant_img_params);
    Toast.makeText(getBaseContext(),"ID: "+rs.getInt(1), Toast.LENGTH_LONG).show();

    data_scroll_view.addView(data_big_layout); //Cannot add data_big_layout in the next loop

    z = "Search successful";

}
isSuccess = true;
stmt.close();
rs.close();
con.close();

代码data_scroll_view.addView(data_big_layout);只能在while循环的第一次运行。我选择了两行数据,但是程序中的输出只能显示一个LinearLayout。我该怎么解决呢?谢谢大家。

EN

回答 2

Stack Overflow用户

发布于 2019-02-23 09:13:08

滚动视图只能包含一个子视图。

滚动视图中可能只有一个直接子视图。谷歌文档

因此,在循环内部,您应该将视图收集到一个垂直的LinearLayout中,然后将其添加到循环外部的ScrollView中。

票数 1
EN

Stack Overflow用户

发布于 2019-02-23 09:12:05

提及https://developer.android.com/reference/android/widget/ScrollView

ScrollView是一个视图组,它允许滚动放置在其中的视图层次结构。滚动视图中可能只有一个直接子视图。

若要在滚动视图中添加多个视图,请使直接子视图添加一个视图组(例如LinearLayout ),并在该LinearLayout中放置其他视图“。

因此,不要尝试将LinearLayouts添加到ScrollView中,而是将一个LinearLayout作为ScrollView's子节点,并向该LinearLayout添加任何视图/布局。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54839955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档