2010-10-06 14 views
6

मेरे पास एक रैखिक लेआउट है जिसमें पांच टेक्स्ट व्यू हैं। मान लें कि कोई उपयोगकर्ता तीसरे टेक्स्ट व्यू पर क्लिक करता है; मैं उस टेक्स्ट व्यू को पूरी स्क्रीन पर विस्तारित करना चाहता हूं। दूसरे शब्दों में, मैं तीसरे टेक्स्ट व्यू को अन्य पाठ दृश्यों के ऊपर एक ही गतिविधि में पूर्ण स्क्रीन के रूप में दिखाना चाहता हूं। मैं यह कैसे करु?पूर्ण स्क्रीन के रूप में एंड्रॉइड व्यू का विस्तार करें

उत्तर

1

हाँ, मुझे आपके मुद्दे का अर्थ दिखाई देता है। नीचे उदाहरण देखें, मैंने यह सुनिश्चित करने के लिए इसका परीक्षण किया है कि यह काम करता है। यह शायद सबसे सुंदर समाधान नहीं है, लेकिन यहां जाता है।

इस बार मैंने प्रत्येक पाठ दृश्य के लिए ऊंचाई 0 और वजन 1 सेट किया है। यह प्रत्येक दृश्य को ऊंचाई के बराबर टुकड़ा लेता है।

<TextView 
    android:id="@+id/textview1" 
    android:layout_width="fill_parent" 
    android:layout_height="0px" 
    android:layout_weight="1" 
    android:text="text1" 
/> 

गतिविधि कोड में, मैं निम्नलिखित उदाहरण घोषणाओं है:

private TextView tv1; 
private TextView tv2; 
private TextView tv3; 
private TextView tv4; 
private TextView tv5; 

private boolean singleViewExpanded = false; 

private OnClickListener myOnClickListener = new OnClickListener(){   
    public void onClick(View arg0) {   

     if(singleViewExpanded)     
     { 
      showAllViews();  
      singleViewExpanded = false; 
     } 
     else 
     { 
      // Hide all views apart from the clicked one 
      hideAllViews(); 
      arg0.setVisibility(View.VISIBLE); 
      singleViewExpanded = true; 
     } 
    }   
}; 

singleViewExpanded आप ट्रैक है कि क्या आप सभी दृश्यों या सिर्फ एक दिखा रहे हैं देता है। ऑनक्लिक लिस्टनर को यहां परिभाषित किया गया है ताकि हम इसे प्रत्येक टेक्स्ट व्यू के लिए सेट कर सकें।

private void showAllViews() 
{ 
    tv1.setVisibility(View.VISIBLE); 
    tv2.setVisibility(View.VISIBLE); 
    tv3.setVisibility(View.VISIBLE); 
    tv4.setVisibility(View.VISIBLE); 
    tv5.setVisibility(View.VISIBLE); 

} 

private void hideAllViews() 
{ 
    tv1.setVisibility(View.GONE); 
    tv2.setVisibility(View.GONE); 
    tv3.setVisibility(View.GONE); 
    tv4.setVisibility(View.GONE); 
    tv5.setVisibility(View.GONE); 
} 

और अंत में, तार ऊपर onCreate विधि के अंदर onClick हैंडलर:

ये शो और छिपाने तरीके हैं

tv1 = (TextView)findViewById(R.id.textview1); 
    tv2 = (TextView)findViewById(R.id.textview2); 
    tv3 = (TextView)findViewById(R.id.textview3); 
    tv4 = (TextView)findViewById(R.id.textview4); 
    tv5 = (TextView)findViewById(R.id.textview5); 

    tv1.setOnClickListener(myOnClickListener); 
    tv2.setOnClickListener(myOnClickListener); 
    tv3.setOnClickListener(myOnClickListener); 
    tv4.setOnClickListener(myOnClickListener); 
    tv5.setOnClickListener(myOnClickListener); 
3

आप शुरू में निर्धारित करते हैं तो प्रत्येक पाठ को देखने के ऊंचाई के रूप में नीचे wrap_content रहे हैं:

<TextView 
    android:id="@+id/textview1" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="text1" 
/> 

फिर एक क्लिक हैंडलर कि नीचे के रूप में wrap_content और fill_parent के बीच layout_height टॉगल देते हैं, तो आप को प्राप्त करना चाहिए कि आप क्या चाहते।

final TextView tv1 = (TextView)findViewById(R.id.textview1); 

    tv1.setOnClickListener(new OnClickListener(){   
     public void onClick(View arg0) {     
      if(tv1.getLayoutParams().height == LayoutParams.FILL_PARENT) 
       tv1.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT)); 
      else 
       tv1.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));     
     }   
    }); 

यदि आप प्रारंभ में अपने टेक्स्ट दृश्यों को स्थानांतरित करना चाहते हैं तो आप लेआउट_वेट के साथ भी खेल सकते हैं।

+0

उत्तर के लिए धन्यवाद, लेकिन इस कोड में कुछ भी नहीं है। मेरे कार्यक्रम में मैंने 5 टेक्स्ट दृश्य तैयार किए हैं जो लंबवत अभिविन्यास में रैखिक लेआउट के नीचे हैं। मैंने ऊपर दिए गए कोड को तीसरे टेक्स्ट व्यू के ऑनक्लिक लिस्टनर के साथ सेट किया है। लेकिन जब तीसरे पाठ दृश्य पर क्लिक किया जाता है तो यह वही रहता है, यह विस्तारित नहीं हो रहा है और अन्य टेक्स्ट दृश्यों को ओवरलैप कर रहा है। –

+0

हां यह काम करता है, समस्या यह थी कि मेरे रैखिक लेआउट कंटेनर में लेप चौड़ाई और ऊंचाई Wrap_Content के रूप में थी। इसे Fill_Parent में बदलने के बाद यह काम किया। लेकिन अब समस्या यह है कि जब मैं टेक्स्ट व्यू पर क्लिक करता हूं तो यह केवल नीचे की तरफ बढ़ जाता है यानी यह टेक्स्ट व्यू के नीचे की जगह को कवर करता है। लेकिन ऐसे विचार हैं जो इस पाठ दृश्य से ऊपर हैं। मैं चाहता हूं कि इस दृश्य को ऊपर और नीचे दोनों दिशाओं में विस्तारित किया जाए ताकि पूरे स्क्रीन को कवर किया जा सके। –

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