2015-06-30 2 views
0

У меня есть RelativeLayout внутри другого Relative Layout.Когда я использую внутренний макет для LinearLayout, код работает отлично. Я читал о многих таких questions здесь, на SO. Иногда упоминалось, что используемые параметры макета должны быть из родительский макет. Я не смог полностью понять это. Это, где я ошибаюсь?Почему setMargins не работает с моим RelativeLayout?

Спасибо заранее, ребята!

МОЕЙ XML FILE

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:id="@+id/rel1" > 

<RelativeLayout 
    android:id="@+id/ll" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_alignParentBottom="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentTop="true" > 

<ImageView 
    android:id="@+id/imageView1" 
    android:layout_width="120dp" 
    android:layout_height="60dp" 
    android:layout_alignParentRight="true" 
    android:layout_centerVertical="true" 
    android:layout_marginRight="20dp" 
    android:src="@drawable/helo" /> 

    </RelativeLayout> 

</RelativeLayout> 

Функция Где я использую поле

public void showcopter() 
    { 
      ImageView image=(ImageView)findViewById(R.id.imageView1);   
      RelativeLayout.LayoutParams lp=(RelativeLayout.LayoutParams)(image.getLayoutParams()); 
      lp.leftMargin =0;//(int)((width-150)*density); 
      lp.topMargin=(int)(hg-(30*density)); //hg is a global variale which stores the screen height 
    // Log.d("hello_girl",hg+" "); 
    // lp.setMargins((int) ((width-150)*density),(int)(hg-(30*density)),0,0); 
      image.setLayoutParams(lp); 
      image.requestLayout(); 
    } 

ответ

2

Так как вы установили андроид: layout_alignParentRight, чтобы быть правдой, LEFTMARGIN не вступит в силу, и в то время как вы устанавливаете android: layout_centerVertical, чтобы быть правдой, topMargin тоже не вступит в силу.

+0

Да, это сработало спасибо. Просто скопируйте код вставки, вот почему это произошло. Спасибо. –

+0

Рад, что я могу помочь – caojitianlunte

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