एंड्रॉइड कैसे सेट करें: एंड्रॉइड में जावा की तरफ से टेक्स्ट व्यू को गुरुत्वाकर्षण


219

मैं उपयोग कर सकता हूं android:gravity="bottom|center_horizontal" अपने वांछित परिणाम प्राप्त करने के लिए एक textview पर xml में , लेकिन मुझे यह प्रोग्रामेटिक रूप से करने की आवश्यकता है। tablerowयदि कोई मायने रखता है तो मेरा टेक्स्टव्यू अंदर है relativelayout

मैंने कोशिश की है:

LayoutParams layoutParams = new TableRow.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL);
labelTV.setLayoutParams(layoutParams);

लेकिन अगर मैं सही ढंग tablerowसे समझूं , तो वह इस पर लागू होगा , न कि टेक्स्टव्यू?

जवाबों:


523
labelTV.setGravity(Gravity.CENTER | Gravity.BOTTOM);

कोटलिन संस्करण (थोमी के लिए धन्यवाद)

labelTV.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM

इसके अलावा, क्या आप गुरुत्वाकर्षण के बारे में या लेआउट_ग्रेविटी के बारे में बात कर रहे हैं ? उत्तरार्द्ध एक RelativeLayout में काम नहीं करेगा ।


धन्यवाद कि काम किया। मुझे लगता है कि लापता के लिए अब थोड़ा मूर्खतापूर्ण लगता है। मूल रूप से समस्या एक पाठ क्षेत्र पर मार्जिन निर्धारित कर रही थी। मुझे लगता है कि मुझे लगता है क्योंकि मैं एक setMargin () विधि मिल सकता है कि setGravity नहीं मौजूद होगा।
नैट

7
धन्यवाद +1, मैंने दस्तावेज़ीकरण पाया, लेकिन हमेशा की तरह यह केवल आधा रास्ता जाता है, यह स्पष्ट रूप से नहीं कहा गया है कि मुझे गुरुत्वाकर्षण गुरुत्वाकर्षण कहां से प्राप्त होता है (गुरुत्वाकर्षण आदि)।
हेन डू प्लेसिस

1
जो कोई भी मेरे जैसे गूगल से यहां आता है, उसके लिए कोटलिन रास्ता है:it.gravity = Gravity.CENTER_HORIZONTAL or Gravity.BOTTOM
थोमी

मेरे लिए कोटलिन रास्ता भ्रामक है, ऐसा क्यों है orऔर क्या नहीं and?!?!
ज़ुमजिक

38

यह टेक्स्ट को टेक्स्ट व्यू में केंद्रित करेगा:

TextView ta = (TextView) findViewById(R.layout.text_view);
LayoutParams lp = new LayoutParams();
lp.gravity = Gravity.CENTER_HORIZONTAL;
ta.setLayoutParams(lp);

5
यह काम नहीं किया। "lp.gravity को हल नहीं किया जा सकता है या एक क्षेत्र नहीं है"
नैट

अजीब बात है क्योंकि यह कोड काम करता है और मेरे लिए ठीक संकलन करता है। आप टेक्स्टव्यू का वजन कैसे निर्धारित करेंगे क्योंकि उनकी कोई सेट वाइट () विधि नहीं है?
रेडियोफ्रीक्वेंसी

4
मुझे समस्या मिल गई। नैट android.view.ViewGroup आयात कर रहा है। उस वर्ग के पास विभिन्न प्रकार के तरीके हैं और संकलन नहीं करता है। आपको इसके बजाय android.view.WindowManager आयात करना चाहिए।
फिनबॉय

बेहतर होना चाहिए android.widget.LinearLayout.LayoutParams जब पाठ दृश्य रैखिक लेआउट के अंदर होता है। Othervise से आपको ClassCastException मिलती है
Othervise से ClassCastException

धन्यवाद, यह काम करता है। लेकिन यह एक पूर्ण समाधान नहीं है क्योंकि एक प्रकार का LayoutParamsयहाँ परिभाषित नहीं है और भिन्न हो सकता है, इसलिए यह संकलन नहीं करेगा। आपको एक मूल लेआउट (उदाहरण के लिए LinearLayout) जानना चाहिए और इसे यहां लिखना चाहिए।
कूलमाइंड

7

हम नीचे दिए गए तरीके से किसी भी दृश्य पर लेआउट गुरुत्वाकर्षण सेट कर सकते हैं-

myView = findViewById(R.id.myView);
myView.setGravity(Gravity.CENTER_VERTICAL|Gravity.RIGHT);
 or
myView.setGravity(Gravity.BOTTOM);

यह नीचे xml कोड के बराबर है

<...
 android:gravity="center_vertical|right"
 ...
 .../>

लेआउट गुरुत्वाकर्षण गुरुत्वाकर्षण के समान नहीं है
Zvonimir Peran

3

आपको उपयोग करना चाहिए textView.setGravity(Gravity.CENTER_HORIZONTAL);

याद है कि का उपयोग कर

LinearLayout.LayoutParams layoutParams =new LinearLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT);
layoutParams2.gravity = Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL;

काम नहीं करेगा। यह विजेट के लिए गुरुत्वाकर्षण सेट करेगा और पाठ के लिए नहीं।



2
textView.setGravity(Gravity.CENTER | Gravity.BOTTOM);

यह आपके टेक्स्टव्यू का गुरुत्वाकर्षण सेट करेगा।


0

इसे कुछ चीजों को हल करके, पहले heightमेरे TextViewद्वारा sizeप्राप्त किया जा रहा है और पाठ द्वारा इसे गोताखोरी के साथ संभव लाइनों की कुल राशि प्राप्त करने के लिए TextView

int maxLines = (int) TextView.getHeight() / (int) TextView.getTextSize();

आपके द्वारा यह मान प्राप्त करने के बाद आपको TextView maxLinesइस नए मान पर सेट करने की आवश्यकता है ।

TextView.setMaxLines(maxLines);

एक बार लाइनों की अधिकतम मात्रा पार हो Gravityजाने के Bottomबाद सेट करें और यह अपने आप नीचे स्क्रॉल हो जाएगा।

if (TextView.getLineCount() >= maxLines) {
    TextView.setGravity(Gravity.BOTTOM);
}

इसे सही तरीके से काम करने के लिए, आपको इसका उपयोग append()करना होगा TextView, यदि आप setText()यह काम नहीं करेंगे।

TextView.append("Your Text");

इस पद्धति का लाभ यह है कि इसका उपयोग heightआपके TextViewऔर पाठ की परवाह किए बिना गतिशील रूप से किया जा सकता है size। यदि आप अपने लेआउट में संशोधन करने का निर्णय लेते हैं तो यह कोड अभी भी काम करेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.