2013-02-13 87 views
1

我有這樣的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="fill_parent" 
    android:gravity="center_horizontal" 
    android:background="#FFFFFF"> 
    <ScrollView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     > 

     <TableLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" > 

      <TextView 
      android:id="@+id/nektaText" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center" 
      android:textSize="10pt" 
      android:textAlignment="center" 
      android:text="example text will not be used" /> 

      <ImageView 
      android:id="@+id/horilinee" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingTop="5dp" 
      android:paddingBottom="5dp" 
      android:src="@drawable/horiline" /> 

      <TableRow 
       android:id="@+id/table" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_weight="1" 
       android:gravity="bottom" > 

       <Button 
       android:id="@+id/send" 
       android:text="أرسل" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" /> 

       <EditText 
       android:id="@+id/commenttext" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:hint="اكتب التعليق هنا" 
       android:minLines="1" 
       android:paddingRight="5dp" 
       android:paddingLeft="5dp" 
       android:scrollHorizontally="true" 
       android:scrollbars="vertical" 
       android:layout_weight="1" 
       android:singleLine="false" /> 

      </TableRow> 

      <ImageView 
      android:id="@+id/horilineee" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingTop="5dp" 
      android:paddingBottom="5dp" 
      android:src="@drawable/horiline" /> 

      <ListView 
       android:id="@id/android:list" 
       android:layout_width="match_parent" 
       android:layout_height="fill_parent" 
       android:drawSelectorOnTop="false" 
       android:paddingLeft="5dp" 
       android:paddingRight="5dp" /> 

     </TableLayout> 
    </ScrollView> 


    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 

     android:gravity="center_horizontal" > 

     <TableLayout 
      android:id="@+id/tableLayout1" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" > 

      <TableRow 
       android:id="@+id/tableRow0" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_weight="1" 
       android:gravity="bottom" 
       android:paddingBottom="10dp" 
       android:paddingTop="10dp" > 

       <ImageView 
        android:id="@+id/horiline" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:src="@drawable/horiline" /> 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_weight="1" 
       android:gravity="bottom" > 

       <ImageView 
        android:id="@+id/share" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        android:src="@drawable/share" /> 

       <ImageView 
        android:id="@+id/block" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:src="@drawable/block" /> 

       <ImageView 
        android:id="@+id/thumbdown" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        android:src="@drawable/thumbdown" /> 

       <ImageView 
        android:id="@+id/thumbup" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:src="@drawable/thumbup" /> 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_weight="1" 
       android:gravity="bottom" > 

       <TextView 
        android:id="@+id/sharetext" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        android:gravity="center_horizontal" 
        android:text="شارك" 
        android:textSize="12dp" /> 

       <TextView 
        android:id="@+id/blocktext" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        android:gravity="center_horizontal" 
        android:text="إبلاغ إساءة" 
        android:textSize="12dp" /> 

       <TextView 
        android:id="@+id/dislikenumber" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        android:gravity="center_horizontal" 
        android:textColor="#FF0000" 
        android:textSize="12dp" /> 

       <TextView 
        android:id="@+id/likenumber" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        android:gravity="center_horizontal" 
        android:textColor="#00FF00" 
        android:textSize="12dp" /> 
      </TableRow> 
     </TableLayout> 
    </LinearLayout> 

</RelativeLayout> 

,但似乎並不奏效,因爲我希望它是。我需要它像下圖:

figure

的問題,我的代碼是列表視圖我不能tablelayout之前其拉伸至底部。另一個問題是如果頂部的textview太長,它出現在tablelayout下面,它是可見的。

此外,當鍵盤可見時,底部的桌面佈局向上移動,我不希望發生這種情況。

有什麼建議嗎?

+0

如果你真的想在'ScrollView'裏面有一個'ListView',你必須手動定義它的高度來滾動整個佈局。否則'ScrollView'將不起作用,因爲'ListView'有它自己的Scroller。 – Shaiful 2013-02-13 09:06:11

+0

我試圖做到這一點,但問題出在屏幕尺寸。從我所知道的@Shaiful – mostashaar 2013-02-13 09:09:20

+0

,我們不能用scrollview裏面的listview來設計。只能使用一個具有滾動功能的視圖。以線性佈局或相對佈局來包裝列表視圖。 – SKK 2013-02-13 09:10:34

回答

-1

滾動型需要聲明:

android:layout_above="@+id/Layout1" 

佈局1是佈局主機tableLayout1

但是,你將不得不與ListView的一些問題納入滾動視圖

-1

因爲有你RelativeLayout只有兩個佈局,使用LinearLayout。這將解決重疊問題。設置ScrollView的重量以保持TableLayout處於底部。

由於鍵盤的模式設置爲Resize,鍵盤會移動底部表格佈局。您通常會通過AndroidManifest.xml中每個定義的android:windowSoftInputMode屬性來控制此行爲。將其值設爲adjustPan

1

在您的佈局中有一個ListView。您可以使用addHeaderView()方法將其他視圖(如圖中所示)添加爲列表視圖的標題。這樣您就可以根據需要獲得滾動效果。

+0

這是正確的答案。我知道,因爲我自己也會這樣回答。 – Budius 2013-02-13 09:32:00

0

謝謝大家的支持。我想出了一個更好的解決方案:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:background="#FFFFFF" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:orientation="vertical" > 

     <ScrollView 
      android:layout_width="fill_parent" 
      android:layout_height="70dp" 
      android:layout_weight="1" > 

      <TextView 
       android:id="@+id/nektaText" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:gravity="center" 
       android:text="example text will not be used" 
       android:textAlignment="center" 
       android:textSize="10pt" /> 
     </ScrollView> 

     <ImageView 
      android:id="@+id/horilinee" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingBottom="5dp" 
      android:paddingTop="5dp" 
      android:src="@drawable/horiline" /> 

     <TableRow 
      android:id="@+id/table" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_weight="0.5" 
      android:gravity="bottom" > 

      <Button 
       android:id="@+id/send" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="4" 
       android:text="أرسل" /> 

      <EditText 
       android:id="@+id/commenttext" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:hint="اكتب التعليق هنا" 
       android:minLines="1" 
       android:paddingLeft="5dp" 
       android:paddingRight="5dp" 
       android:scrollHorizontally="true" 
       android:scrollbars="vertical" 
       android:singleLine="false" /> 
     </TableRow> 

     <ImageView 
      android:id="@+id/horilineee" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:paddingBottom="5dp" 
      android:paddingTop="5dp" 
      android:src="@drawable/horiline" /> 

     <ListView 
      android:id="@id/android:list" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="50" 
      android:drawSelectorOnTop="false" 
      android:paddingLeft="5dp" 
      android:paddingRight="5dp" /> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/layout0" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:gravity="end" > 

     <TableLayout 
      android:id="@+id/tableLayout1" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" > 

      <TableRow 
       android:id="@+id/tableRow0" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_weight="1" 
       android:gravity="bottom" 
       android:paddingBottom="10dp" 
       android:paddingTop="10dp" > 

       <ImageView 
        android:id="@+id/horiline" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:src="@drawable/horiline" /> 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow1" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_weight="1" 
       android:gravity="bottom" > 

       <ImageView 
        android:id="@+id/share" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        android:src="@drawable/share" /> 

       <ImageView 
        android:id="@+id/block" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:src="@drawable/block" /> 

       <ImageView 
        android:id="@+id/thumbdown" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        android:src="@drawable/thumbdown" /> 

       <ImageView 
        android:id="@+id/thumbup" 
        android:layout_width="0dp" 
        android:layout_height="wrap_content" 
        android:layout_weight="1" 
        android:src="@drawable/thumbup" /> 
      </TableRow> 

      <TableRow 
       android:id="@+id/tableRow2" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_gravity="center" 
       android:layout_weight="1" 
       android:gravity="bottom" > 

       <TextView 
        android:id="@+id/sharetext" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        android:gravity="center_horizontal" 
        android:text="شارك" 
        android:textSize="12dp" /> 

       <TextView 
        android:id="@+id/blocktext" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        android:gravity="center_horizontal" 
        android:text="إبلاغ إساءة" 
        android:textSize="12dp" /> 

       <TextView 
        android:id="@+id/dislikenumber" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        android:gravity="center_horizontal" 
        android:textColor="#FF0000" 
        android:textSize="12dp" /> 

       <TextView 
        android:id="@+id/likenumber" 
        android:layout_width="0dp" 
        android:layout_height="match_parent" 
        android:layout_weight="1" 
        android:gravity="center_horizontal" 
        android:textColor="#00FF00" 
        android:textSize="12dp" /> 
      </TableRow> 
     </TableLayout> 
    </LinearLayout> 

</LinearLayout>