2016-05-20 4 views
1

Я работаю над игрой для Android. Я пытаюсь поместить изображение в верхнем левом углу экрана, используя поля, но он не работает.Android RelativeLayout LayoutParams setMargins (500,500,0,0) Не работает

Основная деятельность:

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    ... 
    Display display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getRealSize(size); 

    RelativeLayout relativeLayout = new RelativeLayout(this); 
    RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.MATCH_PARENT, 
      RelativeLayout.LayoutParams.MATCH_PARENT 
    ); 
    relativeLayout.setLayoutParams(layoutParams); 
    setContentView(relativeLayout); 
    gameView = new GameView(this, this, size.x, size.y); 
    relativeLayout.addView(gameView); 
... 

И мой GameBoard класс:

public GameBoard (Activity activity, ...) { 
    ... 
    revealItemImageView = new ImageView(activity); 
    revealItemImageView.setImageBitmap(bitmap); 
    RelativeLayout.LayoutParams revealItemLayoutParams = new RelativeLayout.LayoutParams(
     (int)(screenHeight * 0.66), (int)(screenHeight * 0.66)); 
    revealItemLayoutParams.setMargins(500, 500, 0, 0); 
    revealItemImageView.setLayoutParams(revealItemLayoutParams); 
    activity.addContentView(revealItemImageView, revealItemLayoutParams); 
    revealItemImageView.requestLayout(); 

Но изображение появляется прямо в верхнем левом углу без пробела между верхней или левой стороне. Зачем?

+0

Попробуйте добавить его в 'RelativeLayout' вместо – Karakuri

+0

Спасибо за указание на это. Это в сочетании с добавлением второго представления контента было именно тем, что мне нужно. Я создаю ответ, чтобы другие с этим вопросом могли видеть полный код. – Joe

ответ

0

Представление должно быть добавлено к относительной компоновке, а относительная компоновка должна быть добавлена ​​в виде второго содержимого.

Я собрал демонстрацию кода в своем собственном проекте. Два вида изображений имеют соответствующие поля и слегка перекрываются.

Вот код целиком.

package com.zzzzzzzz.testrelativelayout; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.ImageView; 
import android.widget.RelativeLayout; 

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    // layer 1 
    RelativeLayout mainActivityContentViewRelativeLayout = new RelativeLayout(this); 
    RelativeLayout.LayoutParams mainActivityContentViewLayoutParams = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.MATCH_PARENT, 
      RelativeLayout.LayoutParams.MATCH_PARENT 
    ); 
    mainActivityContentViewRelativeLayout.setLayoutParams(mainActivityContentViewLayoutParams); 
    setContentView(mainActivityContentViewRelativeLayout); 

    RelativeLayout.LayoutParams backgroundLayoutParams = new RelativeLayout.LayoutParams(100, 100); 
    backgroundLayoutParams.setMargins(100, 100, 0, 0); 
    ImageView backgroundView = new ImageView(this); 
    backgroundView.setImageResource(R.drawable.item_baby_bottle_b); 
    backgroundView.setLayoutParams(backgroundLayoutParams); 
    mainActivityContentViewRelativeLayout.addView(backgroundView); 

    // layer 2 
    RelativeLayout secondContentViewRelativeLayout = new RelativeLayout(this); 
    RelativeLayout.LayoutParams secondContentViewLayoutParams = new RelativeLayout.LayoutParams(
      RelativeLayout.LayoutParams.MATCH_PARENT, 
      RelativeLayout.LayoutParams.MATCH_PARENT 
    ); 
    secondContentViewRelativeLayout.setLayoutParams(secondContentViewLayoutParams); 
    addContentView(secondContentViewRelativeLayout, secondContentViewLayoutParams); 

    RelativeLayout.LayoutParams itemLayoutParams = new RelativeLayout.LayoutParams(100, 100); 
    itemLayoutParams.setMargins(150, 150, 0, 0); 
    ImageView itemImageView = new ImageView(this); 
    itemImageView.setImageResource(R.drawable.item_diamond_ring_a); 
    itemImageView.setLayoutParams(itemLayoutParams); 
    secondContentViewRelativeLayout.addView(itemImageView); 


} 

}

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