2015-10-24 2 views
0

Я создаю ImageView программно, и я хочу установить layout_centerVertical = "true" и android: layout_centerHorizontal = "true".Как создать новый объект и установить layout_centerVertical в true программно?

Я попробовал этот код:

ImageView myImage = new ImageView(this); 
    Resources res = getApplicationContext().getResources(); 
    myImage.setImageResource(res.getIdentifier((card.getColor() + "_" + card.getFigure()).toLowerCase(), "drawable", this.getPackageName())); 
    myImage.setTag(IMAGEVIEW_TAG); 

    myImage.setOnTouchListener(new MyTouchListener()); 

    RelativeLayout layout = (RelativeLayout) findViewById(R.id.toplinear); 
    layout.addView(myImage); 

    View positiveButton = myImage.getRootView(); 
    RelativeLayout.LayoutParams layoutParams = 
      (RelativeLayout.LayoutParams)positiveButton.getLayoutParams(); 
    layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); 
    positiveButton.setLayoutParams(layoutParams); 

Однако LogCat бросает ошибку:

Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.RelativeLayout$LayoutParams.addRule(int, int)' on a null object reference at pl.ds13ds14.ucp.CardsActivity.AddCard(CardsActivity.java:55)

Строка 55 содержит:

layoutParams.addRule(RelativeLayout.CENTER_IN_PARENT, RelativeLayout.TRUE); 
+0

так что непонятно? описание ошибки сообщает все это ... – pskink

+0

Почему это null? Как правильно установить эти значения? – Defozo

+0

«Этот метод может возвращать значение null, если этот вид не привязан к родительской группе ViewGroup или setLayoutParams (android.view.ViewGroup.LayoutParams) не был успешно вызван. Когда представление присоединено к родительской ViewGroup, этот метод не должен возвращать значение null. " – pskink

ответ

0

Попробуйте это:


RelativeLayout layout = (RelativeLayout) findViewById(R.id.toplinear); 
    RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
    params.addRule(RelativeLayout.CENTER_HORIZONTAL); 
    params.addRule(RelativeLayout.CENTER_VERTICAL); 
    myImage.setLayoutParams(params); 
    layout.addView(myImage, params); 
Смежные вопросы