Я пытаюсь создать представление для ArrayAdapter. Вот как я это делаю:Параметр макета match_parent не работает?
FrameLayout rowView = new FrameLayout(context);
rowView.setBackgroundColor(Color.BLUE);
RelativeLayout.LayoutParams lp2 = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
lp2.setMargins(0, 0,
context.getResources()
.getDimensionPixelSize(R.dimen.activity_divider_small), 0);
lp2.addRule(RelativeLayout.LEFT_OF, R.id.textView1);
ImageView view = new ImageView(context);
int size = context.getResources().getDimensionPixelSize(
R.dimen.image_avatar_size);
FrameLayout.LayoutParams lp0 = new FrameLayout.LayoutParams(size, size);
view.setBackgroundResource(R.drawable.va);
rowView.addView(view, lp0);
Button btn = new Button(context);
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.MATCH_PARENT);
lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
lp.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
lp.addRule(RelativeLayout.ALIGN_PARENT_TOP);
btn.setBackgroundColor(Color.RED);
int padding = context.getResources().getDimensionPixelSize(
R.dimen.activity_margin);
btn.setPadding(padding, padding, padding, padding);
btn.setText(okButtonText);
btn.setId(R.id.textView1);
RelativeLayout layout = new RelativeLayout(context);
layout.addView(rowView, lp2);
layout.addView(btn, lp);
Мое намерение состоит, чтобы растянуть TextView с OK титрах вертикально. По какой-то причине кнопка не соответствует его родителям. Может ли кто-нибудь указать мне на мою ошибку?
EDIT Вещи становятся действительно странными. Известно, что если мы установим оба параметра ALIGN_PARENT_TOP и ALIGN_PARENT_BOTTOM, представление будет растянуто по вертикали. В моем случае представление помещается в нижней части макета (например, если я устанавливаю только ALIGN_PARENT_BOTTOM).
Это то, что я получаю:
http://img13.imageshack.us/img13/3323/jqs.png
РЕДАКТИРОВАНИЕ
Ну, этот вопрос выглядит вроде как платформы ошибка, так что мне пришлось добавить слушателя, который изменяет размер кнопки OK ,
rowView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
int height = rowView.getHeight();
btn.setHeight(height);
}
});
Я все еще ищу лучшее решение.
Почему вы не создали xml-файл? –
На самом деле я это сделал, но была та же проблема, поэтому я попытался сделать это вручную. – user1256821
Вы пытались использовать 'setBackground()' вместо? И в файле XML должен быть ваш, но с 'android: background' вместо' android: src'. – yugidroid