2011-11-25 14 views
19

मेरे पास निम्न XML है। मैं अपने स्क्रॉलव्यू के नीचे एक स्थिर बटन बनाने की कोशिश कर रहा हूं। मैंने वजन निर्धारित करने की कोशिश की है, बटन को स्क्रॉलव्यू के नीचे सेट करें, आदि। क्या कोई मुझे एक रास्ता दे सकता है कि मैं बटन को नीचे रहने के लिए प्राप्त कर सकता हूं और स्क्रॉलव्यू केवल स्क्रीन के बीच में ले जाता है?स्क्रॉलव्यू के तहत एक स्थिर बटन कैसे बनाएं?

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content"> 



    <LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/menuButtons" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center_horizontal"> 

     <Button xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/newItems" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="New Items" /> 
     <Button xmlns:android="http://schemas.android.com/apk/res/android" 
      android:id="@+id/categories" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Categories" /> 

    </LinearLayout> 


    <ScrollView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:id="@+id/contentScroller" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@id/menuButtons"> 

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


      <TableLayout 
       xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:stretchColumns="1" > 


       <TableRow android:layout_marginTop="5dip" 
          android:layout_marginBottom="5dip" > 
        <ImageView 
         android:src="@drawable/thumbdrive"/>" 
        <TextView 
         android:layout_column="1"    
         android:text="Thumb Drives"    
         android:padding="3dip" 
         android:textSize="20dip"/> 
       </TableRow> 
       <TableRow android:layout_marginTop="5dip" 
          android:layout_marginBottom="5dip"> 
        <ImageView 
         android:src="@drawable/laptop"/> 
        <TextView 
         android:layout_column="1" 
         android:text="Laptops" 
         android:padding="3dip" 
         android:textSize="20dip"/> 
       </TableRow> 
       <TableRow android:layout_marginTop="5dip" 
          android:layout_marginBottom="5dip"> 
        <ImageView 
         android:src="@drawable/sdcard"/> 
        <TextView 
         android:layout_column="1" 
         android:text="SD Cards" 
         android:padding="3dip" 
         android:textSize="20dip"/> 
       </TableRow> 
       <TableRow android:layout_marginTop="5dip" 
          android:layout_marginBottom="5dip"> 
        <TextView 
         android:layout_column="1" 
         android:text="Other" 
         android:padding="3dip" 
         android:textSize="20dip"/> 
       </TableRow> 
       <TableRow android:layout_marginTop="5dip" 
          android:layout_marginBottom="5dip"> 
        <TextView 
         android:layout_column="1" 
         android:text="Other" 
         android:padding="3dip" 
         android:textSize="20dip"/> 
       </TableRow> 
       <TableRow android:layout_marginTop="5dip" 
          android:layout_marginBottom="5dip"> 
        <TextView 
         android:layout_column="1" 
         android:text="Other" 
         android:padding="3dip" 
         android:textSize="20dip"/> 
       </TableRow> 
       <TableRow android:layout_marginTop="5dip" 
          android:layout_marginBottom="5dip"> 
        <TextView 
         android:layout_column="1" 
         android:text="Other" 
         android:padding="3dip" 
         android:textSize="20dip"/> 
       </TableRow> 
       <TableRow android:layout_marginTop="5dip" 
          android:layout_marginBottom="5dip"> 
        <TextView 
         android:layout_column="1" 
         android:text="Other" 
         android:padding="3dip" 
         android:textSize="20dip"/> 
       </TableRow> 
       <TableRow android:layout_marginTop="5dip" 
          android:layout_marginBottom="5dip"> 
        <TextView 
         android:layout_column="1" 
         android:text="Other" 
         android:padding="3dip" 
         android:textSize="20dip"/> 
       </TableRow> 
      </TableLayout> 
     </LinearLayout> 
    </ScrollView> 

    <Button 
     android:id="@+id/submit" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:layout_centerHorizontal="true" 
     android:text="Submit New Item" 
     android:layout_below="@id/contentScroller"/> 

</RelativeLayout> 
+0

मैंने कल ठीक उसी मुद्दे को हल किया लेकिन मुझे एक और चाल मिली, बस जिज्ञासा से, क्या आप मुझे बता सकते हैं कि लैंडस्केप मोड में दृश्य कैसा है? धन्यवाद – tuandroid

+0

परिदृश्य में ठीक लग रहा है। – kieblera5

उत्तर

29

RelativeLayout का उपयोग करें। नीचे Button के साथ शुरू करें, और को Button से ऊपर रखें।

Relative Layout - Android Developers

<RelativeLayout 
    (...)> 

    <LinearLayout android:id="@+id/ll1" 
     android:layout_alignParentTop="true" 
     (...)/> 

    <Button android:id="@+id/button" 
     android:layout_alignParentBottom="true" 
     (...)/> 

    <ScrollView 
     android:layout_above="@id/button" 
     android:layout_below="@id/ll1" 
     (...)/> 

</RelativeLayout> 

इस तरह। मेरे सिर से लिखा है, इसलिए कुछ त्रुटियां हो सकती हैं।

+0

धन्यवाद। मैंने पहले यह कोशिश की थी, लेकिन मेरे पास स्क्रॉलव्यू के बाद बटन था इसलिए यह काम नहीं करता था, लेकिन यह आपके द्वारा लिखे गए तरीके से काम करता है। – kieblera5

+1

इससे 'रिलेवेटिवआउट' को इसके कंटेनर के नीचे तक फैलाने का कारण बन जाएगा। यह ठीक हो सकता है। _ नोट करें कि आप रिलेटिव लयआउट के आकार और उसके बच्चों की स्थिति के बीच परिपत्र निर्भरता नहीं रख सकते हैं। उदाहरण के लिए, आपके पास एक रिलेवेटिवआउट नहीं हो सकता है जिसकी ऊंचाई WRAP_CONTENT पर सेट की गई है और एक बच्चा ALIGN_PARENT_BOTTOM._ पर सेट है - [सापेक्ष लयआउट संदर्भ] (http://developer.android.com/reference/android/widget/RelativeLayout.html) – jtooker

+0

सही एक मेरी समस्या के लिए ... (y) – Elizabeth

0

जगह एक relativeLayout में बटन और माता पिता के नीचे करने के लिए संरेखित:

<RelativeLayout android:layout_alignParentBottom="true" android:layout_width="fill_parent" android:orientation="horizontal" 
    android:layout_height="50px"> 
<Button 
    android:id="@+id/submit" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignParentBottom="true" 
    android:layout_centerHorizontal="true" 
    android:text="Submit New Item" 
    android:layout_below="@id/contentScroller"/> 
</RelativeLayout> 
48

मैं जानता हूँ कि यह वास्तव में देर हो चुकी है लेकिन वहाँ एक बेहतर समाधान है। सापेक्ष लेआउट दृष्टिकोण के साथ समस्या और रिश्तेदार लेआउट के नीचे बटन को संरेखित करना यह है कि यह लेआउट ऊंचाई को अनिवार्य रूप से fill_parent (या match_parent) जैसा ही करता है।

<LinearLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent"> 

    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:fillViewport="true"> 
      <!-- Your Scrollview content goes here --> 
    </ScrollView> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center_horizontal" 
     android:gravity="center_horizontal" 
     android:text="Button Text Goes Here" /> 
</LinearLayout> 

कुंजी 0 के लिए ऊंचाई सेट और फिर इसे 1 के एक लेआउट वजन दे ... मैं क्या हो रहा पढ़ने से बता सकते हैं करने के लिए है:

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

+3

उत्कृष्ट धन्यवाद! मेरे लिए पूरी तरह से काम किया (मुझे अभी तक रिश्तेदार लेआउट के आसपास मेरा सिर नहीं मिला है)। – IanB

+0

धन्यवाद। आपके समाधान ने मुझे 'बाहरी) 'LinearLayout' ** ** को अपने कंटेनर के नीचे तक सभी तरह से नहीं रखा है, यदि' स्क्रॉलव्यू 'की सामग्री कम थी (छोटी) लेकिन ठीक से प्रदर्शित किया गया था 'बटन' को बिना '1px' तक घुमाने के नीचे' (जैसे कि आप 'रिलेवेटिवआउट' का उपयोग करते हैं और 'बटन' को 'स्क्रॉलव्यू'' से नीचे रखना है)। यदि आपको 'लाइनरलाउट' को सभी तरह से खींचने की परवाह नहीं है (यानी हमेशा स्क्रॉल क्षेत्र को जितना संभव हो उतना स्थान भरने के लिए खींचें) कुछ अन्य समाधान मेरे लिए स्पष्ट लगते हैं। – jtooker

+3

सबसे अच्छा समाधान मैंने अब तक देखा है। –

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