2010-05-31 9 views
21

मैं जानना चाहता हूं कि जावा विधि से android:layout_gravity संपत्ति को कॉल करने का कोई तरीका है या नहीं। मुझे ऐसा करने के लिए एंड्रॉइड प्रलेखन में कोई विधि नहीं मिली।एंड्रॉइड के लिए जावा विधि: layout_gravity

http://www.anddev.org/resources/image/2234

मैं एक्सएमएल के माध्यम से यह करने के लिए पता है, निम्नलिखित के रूप में:: यह मैं लागू करना चाहते हैं लेआउट की तस्वीर है

<FrameLayout 
    xlmns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 

     <Button 
     android:layout_gravity="left|center_vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="<" /> 


     <Button 
     android:layout_gravity="right|center_vertical" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text=">" /> 
</FrameLayout> 

लेकिन मेरी स्थिति में, मैं इसे माध्यम से करने की जरूरत है जावा कोड, क्योंकि मैं गतिशील रूप से एक और लेआउट दृश्य लागू करेंगे। जावा कोड के साथ एक्सएमएल लेआउट विलय से बचने के लिए, मैं जावा का उपयोग कर सभी लेआउट बनाना पसंद करूंगा।

+1

btw यहाँ यह समुदाय विकी चिह्नित करने के लिए आवश्यक नहीं होगा के उन्मुखीकरण बदलना चाहिए;) – RoflcoptrException

उत्तर

29

खैर जहाँ तक मैं समझता हूँ कि आप this की तलाश में यह FrameLayout के लिए है के लिए अन्य लेआउट उचित LayoutParams वर्गों देखें। अपनी XML उपयोग की तरह कुछ में की तरह गुरुत्वाकर्षण की स्थापना के लिए:

FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT,Gravity.LEFT | Gravity.CENTER_VERTICAL) 

addView द्वारा पीछा के साथ नव LayoutParams

+0

अच्छा !!! धन्यवाद निकोले =) –

+3

thre कोई CENTRAL_VERTICAL है, यह [CENTER_VERTICAL] (होना चाहिए http://developer.android.com /reference/android/view/Gravity.html) –

+0

और WRAP_CONTENT 'ViewGroup.LayoutParams.WRAP_CONTENT' –

2

शायद मैं आप गलत, लेकिन यहाँ यह है:

http://developer.android.com/reference/android/widget/TextView.html#setGravity(int)

+4

दुर्भाग्य है कि TextView में पाठ के लिए गुरुत्वाकर्षण है, TextView के लेआउट के लिए गुरुत्वाकर्षण नहीं। –

+0

आप इसे बटन के लिए भी उपयोग कर सकते हैं। बटन को यह –

+0

हां, स्टीव विरासत में मिला है। = (दुर्भाग्य है कि पाठ के लिए गुरुत्वाकर्षण, एंड्रॉयड का एक ही है:।! गुरुत्वाकर्षण –

2

Watchout का निर्माण! हालांकि यह LinearLayout के साथ काम नहीं करेगा। क्योंकि LinearLayout.LayoutParams (...) कन्स्ट्रक्टर FrameLayout.LayoutParams (...) कन्स्ट्रक्टर से अलग है। तीसरा पैरामीटर गुरुत्वाकर्षण लेकिन वजन नहीं है।

 LinearLayout.LayoutParams(int width, int height, float weight) 

के रूप में होने के बावजूद संकलक त्रुटि उत्पादन नहीं,

 FrameLayout.LayoutParams(int width, int height, int gravity) 

और इस कॉल करने का विरोध वास्तव में गलत है:

lparams = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.LEFT); 
+0

LayoutParams' यद्यपि आप निर्माता के माध्यम से गुरुत्वाकर्षण सेट नहीं कर सकते, लेकिन अभी आप कर सकते हैं LinearLayout.LayoutParams के गुरुत्वाकर्षण क्षेत्र सार्वजनिक है वहां से गुरुत्वाकर्षण का उपयोग करें –

1
button.setBackgroundResource(R.drawable.sound_on); 
     button.setText("On"); 
     button.setGravity(Gravity.CENTER_VERTICAL| Gravity.RIGHT); 
     button.invalidate(); 
+0

layout_gravity गुरुत्वाकर्षण के समान नहीं है। गुरुत्वाकर्षण आपके बच्चों की गुरुत्वाकर्षण है। लेआउट गुरुत्वाकर्षण क्या आप अपने माता-पिता को लेआउट बता रहे हैं कि आप अपनी गुरुत्वाकर्षण क्या चाहते हैं। – MinceMan

1

एक मौजूदा के लिए layout_gravity विशेषता को बदलने के लिए देखें:

Button button = (Button) findViewById(R.id.some_button); 
FrameLayout.LayoutParams params; 
params = (LayoutParams) button.getLayoutParams(); 

params.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL; 
button.setLayoutParams(params); 

बटन एक FrameLayout जो एक gravity विशेषता layout_gravity XML विशेषता के लिए इसी है में निहित है। Documentation link

-1

बटन जोड़ने से पहले, आप अपने लेआउट

yourbutton.setGravity(Gravity.RIGHT); 
LayoutParams layout = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.RIGHT); 
layout.gravity = Gravity.RIGHT; 
yourbutton.setLayoutParams(layout); 


yourlayout.setGravity(Gravity.RIGHT); 
yourlayout.addView(yourbutton); 
+0

यह सवाल का जवाब कैसे देता है? –

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