2016-06-10 55 views
2

我试图以编程方式在我的relativeLayout中添加边距。我已经编写了代码(如下所述)。但是,当我运行它只剩下边缘工作正确(边缘权利不工作)。Android:左右边距不能以编程方式工作

我使用下面的代码:

public static void setMargins (View v, int l, int t, int r, int b) { 
    if (v.getLayoutParams() instanceof ViewGroup.MarginLayoutParams) { 
     ViewGroup.MarginLayoutParams p = (ViewGroup.MarginLayoutParams) v.getLayoutParams(); 
     p.setMargins(l, t, r, b); 
     v.requestLayout(); 
    } 
} 

设置页边距是这样的:

setMargins(mainLayout,100,0,100,0); 

这是我的布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:background="#ffffff" 
> 
<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical"> 
    <LinearLayout 
     android:id="@+id/contact_include_layout" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:orientation="vertical"> 
     <include layout="@layout/view_common_header_with_tittle" /> 
    </LinearLayout> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:fillViewport="true"> 
    <RelativeLayout 
     android:id="@+id/mainLayout" 
     android:layout_width="fill_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     > 
     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_alignParentTop="true" 
      android:layout_marginTop="@dimen/u_done_action_bottom_margin" 
      android:layout_marginRight="@dimen/u_common_margin_left" 
      android:layout_marginLeft="@dimen/u_common_margin_left" 
      android:orientation="vertical"> 

      <RelativeLayout 
       android:layout_width="match_parent" 
       android:layout_height="@dimen/u_widget_height" 
       android:id="@+id/showCountryDialog" 
       android:background="@drawable/edittext_input_background_not_focus" 
       android:layout_marginTop="@dimen/u_card_button_margin_botton"> 

       <TextView 
        android:layout_width="match_parent" 
        android:layout_height="wrap_content" 
        android:text="Choose Country" 
        android:id="@+id/CountryDialogDefaultText" 
        android:textColor="#4d4d4d" 
        android:textSize="@dimen/u_common_text_size" 
        android:layout_centerVertical="true" 
        android:layout_alignParentLeft="true" 
        android:layout_alignParentStart="true" 
        /> 

       <ImageView 
        android:id="@+id/u_register_third_step_country_image" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:background="@drawable/ic_menu_downarrow_grey" 
        android:layout_centerVertical="true" 
        android:layout_marginRight="@dimen/u_common_text_size" 
        android:visibility="gone" 
        android:layout_alignParentRight="true" 
        /> 
      </RelativeLayout> 


      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="@dimen/u_common_margin_left" 
       android:orientation="horizontal" 

       > 

       <TextView 
        android:id="@+id/u_call_center_t1" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textColor="#4d4d4d" 
        android:textSize="@dimen/u_common_text_size" 
        android:text="@string/u_call_center_phone" /> 

       <TextView 
        android:id="@+id/u_call_center_phone" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:paddingLeft="10dp" 
        android:textColor="#4d4d4d" 
        android:textSize="@dimen/u_common_text_size" 
        /> 
      </LinearLayout> 

      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal" 
       android:layout_marginTop="@dimen/u_spinner_margin_top" 
       > 

       <TextView 
        android:id="@+id/u_call_center_t2" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:textColor="#4d4d4d" 
        android:textSize="@dimen/u_common_text_size" 
        android:text="@string/u_call_center_wh" /> 

       <TextView 
        android:id="@+id/u_call_center_wh" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:paddingLeft="10dp" 
        android:textColor="#4d4d4d" 
        android:textSize="@dimen/u_common_text_size" /> 
      </LinearLayout> 




     </LinearLayout> 


    </RelativeLayout> 
    </ScrollView> 
</LinearLayout> 

我怎样才能解决这个问题?感谢大家

+0

添加以下行'setMargins(mainLayout,100,0,10后0,0);'在你的代码中:' 'yourlayout.setLayoutParams(params);' –

回答

0

你应该通过密度像素(DP)值评价人比像素(PX)使用此功能:

public static int dpToPx(int dp) { 
    return (int) (dp * Resources.getSystem().getDisplayMetrics().density); 
} 

,并调用它设置的空白的功能是这样的:

setMargins(mainLayout,dpToPx(100,0,dpToPx(100),0); 

和相对布局用这种方式来编程设定保证金:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
       params.setMargins(0, dpToPx(10), 0, 0); 
       v.setLayoutParams(params); 
       v.requestLayout(); 
+0

java.lang.ClassCastException:android.widget.FrameLayout $ LayoutParams不能转换为android.widget.RelativeLayout $ LayoutParams @Kapil Rajput – Georgo

+0

@ Georgo尝试清理你的代码并重建 –

相关问题