如何以编程方式将Android imageView和textView对齐在一行中

时间:2012-10-18 20:08:09

标签: android alignment

我从数据库中提取一些数据,需要以子弹列表的形式显示。

使用代码:

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的组合表现不佳,当我有很多成分时焦点会丢失。

1 个答案:

答案 0 :(得分: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是水平的,因此您无需在创建的新窗口中更改它。