Я использую ScrollView, чтобы показать все продукты, которые пользователи добавляют в свою корзину. Я создаю прокрутку, и в нее я создаю линейный макет «intern». Затем я строю каждую строку в цикле. Вот XML-Android ScrollView кажется не распознает его прямого ребенка
<ScrollView
android:id="@+id/scroll"
android:layout_width="300dp"
android:layout_height="230dp"
android:layout_marginLeft="10dp" >
<LinearLayout
android:id="@+id/intern"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"></LinearLayout>
</ScrollView>
Вот код Java.
for(Carrello cns : carrello){
LinearLayout prodotto = new LinearLayout(context);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(/**/LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
prodotto.setLayoutParams(lp);
//Product name
TextView nome_p = new TextView(context);
nome_p.setWidth(dpToPx(115));
nome_p.setTextColor(getResources().getColor(R.color.grey));
nome_p.setText(cns.getNomeProdotto()); /**/
//Counts
TextView quantita = new TextView(context);
quantita.setWidth(dpToPx(80));
quantita.setGravity(Gravity.CENTER);
quantita.setTextColor(getResources().getColor(R.color.grey));
quantita.setTextAppearance(context, R.style.quantita);
quantita.setText(cns.getQuantita());
//Price
TextView prezzo = new TextView(context);
prezzo.setWidth(dpToPx(70));
prezzo.setPadding(dpToPx(5), 0, 0, 0);
prezzo.setTextColor(getResources().getColor(R.color.grey));
prezzo.setTextAppearance(context, R.style.prezzo);
prezzo.setText("€"+cns.getCosto());
//Cancella
Button canc = new Button(context);
LinearLayout.LayoutParams lp_btn = new LinearLayout.LayoutParams(/*LinearLayout.LayoutParams.WRAP_CONTENT*/40,40/*LinearLayout.LayoutParams.WRAP_CONTENT*/);
lp_btn.setMargins(0, dpToPx(10), 0, 0);
canc.setLayoutParams(lp_btn);
canc.setBackground(getResources().getDrawable(R.drawable.btn_canc));
canc.setId(Integer.parseInt(cns.getIDprodotto()));/**/
Log.d("ID-CANC",String.valueOf(canc.getId()));
//create the line
prodotto.addView(nome_p);
prodotto.addView(quantita);
prodotto.addView(prezzo);
prodotto.addView(canc);
intern.addView(prodotto);
i++;
}//end for
Затем добавьте intern
к просмотру прокрутки:
scroll.addView(intern);
Но когда я запустить эмулятор, LogCat говорит, что «ScrollView может принять только один прямой ребенок», и сбои приложения.
scrollview может иметь только один макет как прямой ребенок !. Все, что вам нужно сделать, это объявить любой макет, который вы хотите, например, у вас есть стажер в качестве макета и добавить свои представления в эту ViewGroup. – Manoj