प्रोग्रामेटिक रूप से TextView टेक्स्ट को केंद्र में रखें


86

मैं यहाँ कुछ उदारता की भीख माँगता हूँ, मैं अभी Android SDK ट्यूटोरियल्स के साथ शुरुआत कर रहा हूँ और मैं कुछ ऐसी रुचि का प्रयास कर रहा हूँ जो कि ट्यूटोरियल में ही नहीं है, लेकिन मुझे उम्मीद है कि यह आसान होगा।

मैं एक TextViewआइटम को क्षैतिज और लंबवत रूप से कोड के माध्यम से केंद्रित करने की कोशिश कर रहा हूं (मैं XML में इसे ठीक कर सकता हूं)। मैंने देखा है कि जब माता-पिता एक टेबल या किसी अन्य ऑब्जेक्ट को करते हैं, तो यह कैसे करें, लेकिन मुझे आशा है कि यह मेरे लिए आसान होगा। (ps मेरी शब्दावली को सही करने के लिए स्वतंत्र महसूस करें)।

यहाँ ट्यूटोरियल / मेरे कामकाजी मॉडल का उदाहरण कोड दिया गया है:

package com.example.myfirstapp;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.ViewGroup.LayoutParams;
import android.widget.TextView;


public class DisplayMessageActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Intent intent = getIntent();
        String message = intent.getStringExtra(MainActivity.EXTRA_MESSAGE);

        TextView textView = new TextView(this);
        textView.setTextSize(40);
        textView.setText(message);
        textView.setGravity(View.TEXT_ALIGNMENT_GRAVITY);

        setContentView(textView);
    }
}

मैं setGravityविधि का पता लगाने में कामयाब रहा हूं , और मैंने इसके setLayoutParamsलिए इसमें बाधा डालने की कोशिश की है , लेकिन मुझे यकीन नहीं है कि इसके लिए क्या गुंजाइश है क्योंकि मैं यह पता नहीं लगा सकता हूं कि मुझे WRAP_CONTENTहल करने के लिए निरंतर आयात करने के लिए क्या आयात करना चाहिए। । मैंने जो कुछ भी समझा, उसमें से केंद्र और कंटेंट_वैपिंग + ग्रेविटी दो अलग-अलग चीजें हैं। मैं इस मामले में दोनों कैसे करना है और शायद कैसे / जहाँ मुझे एपीआई प्रलेखन में उत्तर मिला होगा, इसका एक उदाहरण चाहिए।


क्यों बिल्कुल रूट लेआउट के रूप में टेक्स्टव्यू लें?
कल्पेश लखानी

ठीक है, फिर से कोशिश करें कि जब से मुझे यहाँ पर एक डिलीट या एडिट बटन नहीं मिल रहा है। मुझे लगता है कि मुख्य कंटेनर एक रिश्तेदार लेआउट है क्योंकि यह उपयोग कर रहा है (मुझे लगता है) मेरी गतिविधि_display_message.xml इस ट्यूटोरियल का स्रोत थोड़ा कॉपी / पेस्ट- ish है, लेकिन यह यहां स्थित है: bit.ly/VDD9yS <RelativeLayout xmlns: android = " schemas.android.com/apk/res/android " xmlns: tools = " schemas.android.com/tools " android: layout_width = "match_parent" Android: layout_height = "match_parent" उपकरण = संदर्भ = "। DisplayMessageActivity"> <। / रिलेटिवलैट>>
एलेक्स समर्स

मेरे संपादित जवाब को देखें यह आपकी मदद कर सकता है .. :)
कल्पेश लखानी

जवाबों:


246
yourTextView.setGravity(Gravity.CENTER);

बिल्कुल सही, छोटा और मीठा! आकर्षण की तरह काम किया! मैं यह भी देखता हूं कि CENTER_HORIZONTAL और CENTER_VERTICAL गुण हैं। धन्यवाद स्टीव!
एलेक्स समर्स

2
कृपया ध्यान दें कि यह केवल तभी काम करता है जब android:textAlignment="gravity"विशेषता गुरुत्वाकर्षण पर सेट हो। अन्यथा टेक्स्टअलाइनमेंट ओवरराइड हो जाता है।
वेल

1
पाठ व्यवस्थित रूप से व्यवस्थित करने के लिए; yourTextView.setTextAlignment(View.TEXT_ALIGNMENT_GRAVITY);
युसरील मौलिदान राजी

25

गतिशील रूप से केंद्र के लिए

textView.setGravity(Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL);

TextView.setGravity (Gravity.CENTER) के टूटे हुए संस्करण ;, भी एक कामकाजी और अद्भुत जवाब है। शुक्रिया नीरव!
एलेक्स समर्स

काश मैं कर सकता, मैं नया हूँ और इसे वोट करने के लिए पर्याप्त प्रतिनिधि नहीं हूं। मैं हरि को चेक का कारण बताने जा रहा हूं, लेकिन आपके जवाब हाजिर हैं और गरीब साथी प्रतिनिधि का अधिक इस्तेमाल कर सकता है;) जो इस तथ्य से घटा नहीं है कि आपका उत्तर उतना ही मददगार था। (यदि मुझे मौका मिलता है जब मेरा प्रतिनिधि ऊपर जाता है, तो आप दोनों को वोट देना सुनिश्चित करें!)
एलेक्स समर्स

5
TextView text = new TextView(this);

text.setGravity(Gravity.CENTER);

तथा

text.setGravity(Gravity.TOP);

तथा

text.setGravity(Gravity.BOTTOM);

तथा

text.setGravity(Gravity.LEFT);

तथा

text.setGravity(Gravity.RIGHT);

तथा

text.setGravity(Gravity.CENTER_VERTICAL);

तथा

text.setGravity(Gravity.CENTER_HORIZONTAL);

और अधिक भी उपलब्ध है


5

यह सुनिश्चित करने के लिए काम करेंगे ..

RelativeLayout layout = new RelativeLayout(R.layout.your_layour); 
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
params.addRule(RelativeLayout.CENTER_IN_PARENT);
params.addRule(LinearLayout.CENTER_IN_PARENT);
textView.setLayoutParams(params);
textView.setGravity(Gravity.CENTER);

layout.addView(textView);

setcontentView(layout);

2
जब Android.widget.LinearLayout से विरासत में मिली है, तो LinearLayout को CENTER_IN_PARENT संपत्ति नहीं लगती है; क्या मैं कुछ भूल रहा हूँ?
एलेक्स समर्स

2

टेक्स्ट पार्वे के लिए लेआउट पार्म्स को लागू करने के लिए निम्नलिखित कोड जोड़ने का प्रयास करें

LayoutParams lp = new LinearLayout.LayoutParams(
                LinearLayout.LayoutParams.WRAP_CONTENT,
                LinearLayout.LayoutParams.WRAP_CONTENT);
lp.addRule(LinearLayout.CENTER_IN_PARENT);
textView.setLayoutParams(lp);

4
LinearLayout को CENTER_IN_PARENT संपत्ति नहीं लगती है।
एलेक्स समर्स

2

यदि आपका पाठ आकार छोटा है, तो आपको अपने पाठ दृश्य की चौड़ाई "fill_parent" होनी चाहिए। उसके बाद, आप अपने TextView गुरुत्वाकर्षण को केंद्र में सेट कर सकते हैं:

TextView textView = new TextView(this);
textView.setText(message);
textView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
textView.setGravity(Gravity.CENTER);

1

आप TextViewकोटलीन में प्रोग्राम सेंटर टेक्स्ट के लिए निम्न का उपयोग कर सकते हैं :

textview.gravity = Gravity.CENTER

1

इस विधि को आजमाएं

  public void centerTextView(LinearLayout linearLayout) {
    TextView textView = new TextView(context);
    textView.setText(context.getString(R.string.no_records));
    textView.setTypeface(Typeface.DEFAULT_BOLD);
    textView.setGravity(Gravity.CENTER);
    textView.setTextSize(18.0f);
    textView.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT));
    linearLayout.addView(textView);
}

0

इन दोनों को काम करने के लिए एक साथ जाने की जरूरत है। कुछ देर के लिए मेरा सिर खुजलाता रहा।

numberView.textAlignment = View.TEXT_ALIGNMENT_CENTER
 numberView.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,
            ViewGroup.LayoutParams.WRAP_CONTENT)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.