2013-07-25 3 views
1

Я пытаюсь создать представление для 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); 
    } 
}); 

Я все еще ищу лучшее решение.

+0

Почему вы не создали xml-файл? –

+0

На самом деле я это сделал, но была та же проблема, поэтому я попытался сделать это вручную. – user1256821

+0

Вы пытались использовать 'setBackground()' вместо? И в файле XML должен быть ваш, но с 'android: background' вместо' android: src'. – yugidroid

ответ

0

вы должны попробовать layout.addView (btn, lp);

+0

Нет, ничего не изменилось. – user1256821

+0

И если вы измените TextView на Button? – Zoubiock

+0

Кнопка также не масштабируется. – user1256821

Смежные вопросы