2016-06-10 11 views
2

Ich habe versucht, Ränder in meinem relativen Layout programmgesteuert hinzuzufügen. Ich habe den Code geschrieben (wie unten erwähnt). Aber wenn ich es laufe, funktioniert nur der linke Rand richtig (Rand rechts funktioniert nicht).Android: Rand links und rechts nicht programmgesteuert zusammenarbeiten

ich den folgenden Code verwende:

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(); 
    } 
} 

Einstellung Margen wie folgt aus:

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

Das ist mein Layout ist:

<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> 

Wie kann ich dieses Problem lösen? Dank jeder

+0

Fügen Sie die folgende Zeile nach den 'setMargins (mainLayout, 100,0,10 0,0); 'in Ihrem Code: ' yourlayout.setLayoutParams (params); ' –

Antwort

0

Sie sollten Dichte Pixel (dp) Wert rater als Pixel (Pixel) verwenden diese Funktion übergeben:

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

und nennen es in Set-Marge Funktion wie folgt aus:

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

und Für das relative Layout verwenden Sie diese Methode, um den Rand programmatisch zu setzen:

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 können nicht in android.widget.RelativeLayout $ LayoutParams @Kapil Rajput – Georgo

+0

@ Georgo Versuche, deinen Code zu säubern und neu zu erstellen –