0

我正在从数据库中提取一些数据,并且需要以项目符号列表的形式显示它。

使用代码:

for (int i=0; i<ingredcount; i++){
            String ingredient = recipe.Ingredients.get(i);
            View linearlayout = findViewById(R.id.llIngredients);
            ImageView img = new ImageView(RecipeIngredientsDisplay.this);
            TextView txt1 = new TextView(RecipeIngredientsDisplay.this);
            LinearLayout.LayoutParams llp = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            llp.setMargins(30, 2, 15, 2);
            LinearLayout.LayoutParams llp2 = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
            llp2.setMargins(10, 2, 15, 2);

            img.setLayoutParams(llp2);
            img.setImageResource(R.drawable.dot_purple);
            txt1.setLayoutParams(llp);

            txt1.setText(ingredient);
            ((LinearLayout)linearlayout).addView(img);
            ((LinearLayout) linearlayout).addView(txt1);

        }

我正确显示了所有数据,只是我的图像在新行中,文本在它下面。

所以我想以编程方式为我的图像和文本设置权重,以便它们都在一行中。

通常我使用适配器和膨胀 listView 来执行此操作,但是 ScrollView 中的 scrollView 和 ListView 的组合表现不佳,并且当我有很多成分时会失去焦点。

4

1 回答 1

1

您可以将 ImageView 和 TextView 包含在另一个设置为水平的 LinearLayout 中。

LinearLayout l = new LinearLayout( this );
l.setLayoutParams( new LinearLayout.LayoutParams( LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT );
l.addView( img );
l.addView( txt1 );
((LinearLayout)linearlayout).addView( l );

我可能对那个代码有点搞砸了,但你明白了吗?默认情况下,LinearLayout 是水平的,因此您不需要在您创建的新布局中更改它。

于 2012-10-18T20:24:58.213 回答