Я пишу приложение, которое загружает ряд кнопок (2 кнопки, затем черную линию внизу) для каждого найденного файла (так что количество циклов не будет статическим). В настоящее время во время построения у меня есть счетчик статического цикла до 15. Но при запуске кода он создает большую кнопку слева и черную линию под тонкой ... Но ... Маленькая кнопка справа появляется только один раз. Любая идея почему?Относительная компоновка android loopable
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ScrollView scrollPictures = new ScrollView(this);
RelativeLayout appLayout = new RelativeLayout(this);
// appLayout.setClipBounds(null);
Resources r = getResources();
ImageView blackLine;
RelativeLayout.LayoutParams p;
int id = 1;
for(int x = 1; x <= 15; x++){
p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
Button studentsButton = new Button(this);
studentsButton.setClipBounds(null);
studentsButton.setId(id);
studentsButton.setHeight((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, r.getDisplayMetrics()));
studentsButton.setWidth((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 700, r.getDisplayMetrics()));
//studentsButton.setBackgroundColor(Color.LTGRAY);
if (x > 1){
p.addRule(RelativeLayout.BELOW, id - 1);
studentsButton.setLayoutParams(p);
}
appLayout.addView(studentsButton);
id ++;
p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
Button soundButton = new Button(this);
soundButton.setClipBounds(null);
soundButton.setHeight((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, r.getDisplayMetrics()));
soundButton.setWidth((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 100, r.getDisplayMetrics()));
//soundButton.setBackgroundColor(Color.LTGRAY);
p.addRule(RelativeLayout.RIGHT_OF, id - 1);
soundButton.setLayoutParams(p);
appLayout.addView(soundButton);
p = new RelativeLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT);
blackLine = new ImageView(this);
blackLine.setId(id);
blackLine.setBackgroundColor(Color.BLACK);
blackLine.setMinimumWidth((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 700, r.getDisplayMetrics()));
blackLine.setMinimumHeight(3);
blackLine.setMinimumWidth((int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 700, r.getDisplayMetrics()));
blackLine.setClipBounds(null);
p.addRule(RelativeLayout.BELOW, id - 1);
blackLine.setLayoutParams(p);
appLayout.addView(blackLine);
id++;
}
scrollPictures.addView(appLayout);
setContentView(scrollPictures);
}
Я пробовал делать это по-своему, но определение «вид» вызывает ошибку. В начале «getContext()» - это не метод, который можно разрешить. Затем, если я использую «getApplicationContext()», это вызывает ошибку; from() в LayoutInflater нельзя применить к ...... Любая идея? –
это зависит от того, откуда вы его вызываете. Если вы работаете, просто используйте «this» – Matt
. Я получаю ту же ошибку, что и раньше: «from() в LayoutInflater не может быть применено к« ....... Обязательно: Контекст, Найдено: MainActivity, LinearLayout, boolean , причина: фактические и формальные списки аргументов различаются по длине –