2015-03-02 5 views
0

программно создать макет с моей точки зрения:Как накладывать макеты?

RelativeLayout.LayoutParams layoutParamsDummy = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, this.optimalCenterPadding); 
layoutParamsDummy.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); 

RelativeLayout relativeLayoutDummy = new RelativeLayout(this.getContext()); 
relativeLayoutDummy.setId(DUMMY_ID); 
relativeLayoutDummy.setBackground(this.getResources().getDrawable(R.drawable.custom_background)); 
relativeLayoutDummy.setLayoutParams(layoutParamsDummy); 

relativeLayoutCenter.addView(relativeLayoutDummy); 

RelativeLayout.LayoutParams layoutParamsImageViewCenter = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
layoutParamsImageViewCenter.addRule(RelativeLayout.CENTER_HORIZONTAL); 
layoutParamsImageViewCenter.setMargins(0, this.optimalCenterBackgroundPadding, 0, 0); 

this.imageViewCenter = new ImageView(this.getContext()); 
this.imageViewCenter.setLayoutParams(layoutParamsImageViewCenter); 
this.imageViewCenter.setImageDrawable(Images.loadDrawableFromFile(this.getContext(), Paths.IMAGE_BACKGROUND_POWER)); 
this.imageViewCenter.setBackground(null); 

RelativeLayout.LayoutParams layoutParamsImageButtonCenter = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
layoutParamsImageButtonCenter.addRule(RelativeLayout.CENTER_HORIZONTAL); 
layoutParamsImageButtonCenter.addRule(RelativeLayout.ABOVE, DUMMY_ID); 

this.imageButtonCenter = new ImageButton(this.getContext()); 
this.imageButtonCenter.setId(CENTER_ID); 
this.imageButtonCenter.setLayoutParams(layoutParamsImageButtonCenter); 
this.imageButtonCenter.setImageDrawable(Images.loadDrawableFromFile(this.getContext(), Paths.IMAGE_POWER)); 
this.imageButtonCenter.setBackground(null); 
this.imageButtonCenter.setOnDragListener(new DropTargetOnDragListener()); 

Я должен сделать это программно, потому что я использую пользовательский круговое расположение. Что я есть сейчас следующее:

enter image description here

Два круга с большим кругом ниже, чем меньше один. То, что я хочу иметь следующее:

enter image description here

большего круг должен быть точно под меньшим кругом, что означает, что я хочу меньший круг для наложения большего круга. Очень сложно вычислить правильное положение для работы при каждом размере и плотности экрана, и это приводит меня к следующему вопросу:

Могу ли я разместить макет именно под другим макетом?

Я не могу просто установить фон кнопки изображения или что-то в этом роде, потому что зеленый, меньший круг - это область перетаскивания для других кнопок. больший круг не должен вызывать событие капли.

Я также не могу работать с полями, потому что я динамически размещаю кнопки вокруг зеленого, меньшего круга. Я попробовал маржи, но они полностью испортили позиционирование этих кнопок.

+0

Вы можете использовать FrameLayout? – Blackbelt

+1

«Я должен делать это программно, потому что я использую собственный круговой макет». Вы знаете, что вы можете использовать пользовательский вид через xml layotus? – harrane

+0

да, я знаю это. но в моем случае это невозможно. – Mulgard

ответ

1

Попробуйте использовать RelativeLayout.CENTER_IN_PARENT вместо RelativeLayout.CENTER_HORIZONTAL.

Кроме того, вы добавляете свой imageViewCenter и imageButtonCenter в ваш relativeLayoutDummy или relativeLayoutCenter? Я вижу возможную проблему в строке layoutParamsImageButtonCenter.addRule(RelativeLayout.ABOVE, DUMMY_ID);, что означает, что макет DUMMY_ID будет расположен (по вертикали) под файлом imageButtonCenter, он не будет накладывать его.

+0

К сожалению, я не могу этого сделать, потому что вертикальная централизация не подойдет. – Mulgard

+0

Пожалуйста, см. Мой обновленный ответ и проверьте, добавили ли вы изображение и изображение в правильную компоновку. –

+0

Да, это то, что мне удалось позиционировать. он работает на одном экране, но на другом экране с анонимным разрешением он не подходит. вот почему я прошу просто простую функцию наложения ^^ – Mulgard

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