2013-06-18 4 views
22

मेरे पास एक फ्रेम लेआउट में दो रैखिक लेआउट हैं।रैखिक लेआउट शीर्ष मार्जिन प्रोग्रामेटिक रूप से एंड्रॉइड बदलें

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="left" 
    android:orientation="vertical"> 

    <FrameLayout 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:background="@drawable/image12"> 
     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 

       <LinearLayout 
        android:id="@+id/layoutbtnlinear_aboutme" 
        android:layout_width="fill_parent" 
        android:layout_height="55dp" 
        android:gravity="bottom" 
        android:layout_marginTop="10dp" 
        android:background="#b2b2b2" 
        android:orientation="horizontal" > 

        <ImageView 
         android:id="@+id/imgShare_layout_aboutme" 
         android:layout_width="wrap_content" 
         android:layout_height="55dp" 
         android:layout_gravity="right|center|end" 
         android:layout_weight="1.63" 
         android:src="@drawable/ic_share" /> 

        <TextView 
         android:id="@+id/txtTitle_layout_aboutme" 
         android:layout_width="wrap_content" 
         android:layout_height="55dp" 
         android:layout_gravity="left" 
         android:layout_weight="0.3" 
         android:fontFamily="Times New Roman" 
         android:text="About Me" 
         android:textColor="@android:color/black" 
         android:textSize="35sp" 
         android:textStyle="italic" /> 
       </LinearLayout> 

      <LinearLayout 
       android:id="@+id/content" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="vertical"> 

       <ImageButton 
         android:id="@+id/btnSlidingDrawerHandler_layout_aboutme" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_gravity="center" 
         android:background="@drawable/ic_1_navigation_collapse" /> 


       <ListView 
        android:id="@+id/listView_layout_aboutme" 
        android:layout_width="fill_parent" 
        android:layout_height="match_parent" 
        android:footerDividersEnabled="true" 
        android:dividerHeight="4px" 
        android:isScrollContainer="true" 
        android:scrollbarAlwaysDrawVerticalTrack="true" 
        android:scrollbarStyle="outsideInset" 
        android:scrollbars="vertical"> 
       </ListView> 
      </LinearLayout> 
     </LinearLayout>   
    </FrameLayout> 

</LinearLayout> 

यहाँ मैं 10dp करने के लिए आईडी layoutbtnlinear_aboutme साथ रेखीय लेआउट की top margin seting रहा हूँ, लेकिन कोड में मैं यह कैसे मैं इस शीर्ष मार्जिन प्रोग्राम के बदल सकते हैं कुछ शर्त पर 50dp को 10dp बदलना चाहते हैं?

+0

गूगल पर एक बार देख ले, कई अन्य http://stackoverflow.com/questions/9678785/android-setting-layoutparams-programmatically तरह यह करने के लिए इसी तरह के सवाल, – bogdan

उत्तर

78
layout = (LinearLayout) findViewById(R.id.layoutbtnlinear_aboutme); 
    LinearLayout.LayoutParams params = (LinearLayout.LayoutParams)layout.getLayoutParams(); 
    params.setMargins(0, 50, 0, 0); 
    layout.setLayoutParams(params); 
+0

धन्यवाद ... यह काम करता है :) – user2064024

+0

क्यों ??? बस दाएं बटन पर क्लिक करें या ऊपर बटन पर क्लिक करें। – Riser

3

उपयोग इस

layout = (LinearLayout) findViewById(R.id.layuout); 
    LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
     LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); 

    layoutParams.setMargins(30, 20, 30, 0); 
layout.setLayoutParams(layoutParams); 
+0

धन्यवाद कर रहे हैं, लेकिन इस कोड में कहीं भी हों हम रैखिक लेआउट की आईडी निर्दिष्ट करने जा रहे हैं। कि किस लेआउट पर हमें मार्जिन – user2064024

+0

सेट करना है, मैंने अपना कोड संपादित किया है कृपया इसे – abhi

1

मैं मार्जिन सीधे नीचे दिए गए कोड का उपयोग कर (मैं LinearLayout.LayoutParams का उपयोग कर की कोशिश की लेकिन मेरे लिए काम नहीं कर रहा था है)

LinearLayout layout = (LinearLayout)findViewById(R.id.yourrelative_layout); 
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT); 
params.setMargins(3, 300, 3, 3); 
layout.setLayoutParams(params); 

केवल इस यहाँ की स्थापना की है यह ध्यान रखना है कि लेआउट पैराम्स को निम्नलिखित पैकेज android.widget.RelativeLayout.LayoutParams के लिए आयात किया जाना चाहिए जबतक कि आप त्रुटि नहीं दबाएंगे।

2

यह अन्य मार्जिन मानों को अपडेट करने की आवश्यकता के बिना शीर्ष मार्जिन को अपडेट करता है। अपने माता पिता के लेआउट की वजह से मार्जिन सेट करते समय

LinearLayout layout = (LinearLayout) findViewById(R.id.your_linear_layout); 
LinearLayout.LayoutParams layoutParams = (LinearLayout.LayoutParams) layout.getLayoutParams(); 
layoutParams.topMargin = 200; 
layout.setLayoutParams(layoutParams); 
13

LayaoutParams आमतौर पर भ्रम की स्थिति पैदा ... तो यह MarginLayoutParams बहुत उपयोगी है।

MarginLayoutParams params = (MarginLayoutParams) view.getLayoutParams(); 
params.width = 200; params.leftMargin = 100; params.topMargin = 200; 
+2

यह सबसे अच्छा समाधान है क्योंकि यह आपको व्यक्तिगत मार्जिन को सही तरीके से सेट करने की अनुमति देता है। उदाहरण के लिए, यदि आपको केवल शीर्ष मार्जिन सेट करना है, तो बस params.topMargin = yourValue का उपयोग करें। इस तरह अन्य मार्जिन प्रभावित नहीं होंगे। यदि आप रिज़र के समाधान का उपयोग करते हैं, तो आपको setMargins() का उपयोग करना होगा जिसके लिए आपको सभी 4 मार्जिन सेट करना होगा। – Tiago

+0

इन मानों को बदलने के बाद आपको 'view.invalidate()' और 'view.requestLayout()' कॉल करना पड़ सकता है। –

संबंधित मुद्दे