我从数据库中提取一些数据,需要以子弹列表的形式显示。
使用代码:
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的组合表现不佳,当我有很多成分时焦点会丢失。
答案 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是水平的,因此您无需在创建的新窗口中更改它。