2013-08-06 51 views
0

我想創建一個像this形象設計。滾動視圖無法正常工作的Android

我想在左側和右側兩個獨立的滾動

我做了什麼,我已經創建了一個主要的佈局。在我正在膨脹的內部設計在運行時。所以不屑是正確的now.But我做了一些愚蠢的錯誤。因爲那將在滾動裏面的佈置來了。所以,請查看代碼,並幫助我,我在安卓

類新

void setData(){ 
     flightResult=(LinearLayout)findViewById(R.id.flightResultData); 
     LinearLayout.LayoutParams flightDetailsLayout = new LinearLayout.LayoutParams(
        LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); 
     LayoutInflater inflater = (LayoutInflater)getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

     LinearLayout.LayoutParams forUnderLine = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, 
       LayoutParams.WRAP_CONTENT); 
     forUnderLine.setMargins(0,0, 0, 0); 

     flightDetailsLayout.setMargins(0, 40, 0, 0); 
      for(int i=0;i < 13;i++){ 
       TextView line=new TextView(this); 
       line.setBackgroundResource(R.layout.shape_line); 
       line.setLayoutParams(forUnderLine); 
       if(i!=0){ 
        flightResult.addView(line); 
       } 
        LinearLayout flightInformations=(LinearLayout)inflater.inflate(R.layout.flight_details_layout, null); 
        flightLogo=(ImageView)flightInformations.findViewById(R.id.onewayflightLogo); 
        flightCompany = (TextView)flightInformations.findViewById(R.id.onewayflightName); 
        flightLogo.setImageResource(R.drawable.airindia); 
        flightCompany.setText("AirIndia"); 

       flightResult.addView(flightInformations); 
      } 
      TextView dummy=new TextView(this); 
      dummy.setLayoutParams(flightDetailsLayout); 
      flightResult.addView(dummy); 
    } 

主要佈局(我在哪裏infalting到flightResultData)

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal" > 

    <LinearLayout 
     android:id="@+id/mainLinearLayout" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentTop="true" 
     android:background="@drawable/top_bg" 
     android:orientation="horizontal" > 
     <ImageView 
      android:id="@+id/back_button" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/back_btn" 
      android:layout_marginTop="5dp" 
      android:layout_marginLeft="10dp"/> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:layout_marginTop="10dp" 
      android:layout_marginLeft="75dp" 
      android:text="@string/flightHeader" 
      android:textColor="@android:color/white" /> 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/flightDetailsLayout" 
     android:layout_width="fill_parent" 
     android:layout_height="70dp" 
     android:layout_below="@+id/mainLinearLayout" 
     android:layout_centerHorizontal="true" 
     android:background="@drawable/gray_bg123" 
     android:orientation="vertical" > 
     <LinearLayout 
      android:id="@+id/innerflightDetailsLayout" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" > 

      <TextView 
       android:id="@+id/from" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="12dp" 
       android:paddingLeft="12dp" 
       android:textSize="12sp" 
       android:text="Boston to San Fransisco, " 
       android:textStyle="bold" /> 

      <TextView 
       android:id="@+id/tripType" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_marginTop="12dp" 
       android:text="RoundTrip" 
       android:textSize="12sp" /> 

     </LinearLayout> 
     <LinearLayout 
      android:id="@+id/innerTripLayout" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal" > 

      <TextView 
       android:id="@+id/tripDate" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:paddingLeft="12dp" 
       android:textSize="10sp" 
       android:text="19 Jan 2013 " 
       android:textStyle="bold"/> 
      <TextView 
       android:id="@+id/paxText" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="for 1 Adults,0 Childs,O Infants" 
       android:textSize="12dp" /> 
     </LinearLayout> 

     <LinearLayout 
      android:id="@+id/Book" 
      android:layout_width="fill_parent" 
      android:layout_height="fill_parent" 
      android:layout_marginTop="5dp" 
      android:orientation="horizontal" > 

      <TextView 
       android:id="@+id/tripDate" 
       android:layout_width="84dp" 
       android:layout_height="wrap_content" 
       android:paddingLeft="12dp" 
       android:text="Rs 10,2345 " 
       android:textSize="10sp" 
       android:layout_weight="1" 
       android:textStyle="bold" /> 

      <ImageView 
       android:id="@+id/bookBtn" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:gravity="left" 
       android:src="@drawable/book" /> 

     </LinearLayout> 

    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/sortFlightLayouts" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_below="@+id/flightDetailsLayout" 
     android:background="@drawable/gray_bg123" 
     android:orientation="horizontal" > 

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

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="DEL-BLR" 
       android:layout_marginLeft="6dp" 
       android:layout_marginTop="5dp" 
       android:textStyle="bold" /> 

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

       android:orientation="horizontal" > 

       <ImageView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="5dp" 
        android:src="@drawable/flight_icon_result" /> 

       <ImageView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="5dp" 
        android:layout_marginLeft="25dp" 
        android:src="@drawable/time" /> 

       <ImageView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="5dp" 
        android:layout_marginLeft="5dp" 
        android:src="@drawable/rupee" /> 
      </LinearLayout> 
     </LinearLayout> 
     <View 
      android:layout_width="1dp" 
      android:layout_height="60dp" 
      android:background="@android:color/darker_gray" /> 
     <LinearLayout 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:background="@drawable/gray_bg123" 
      android:orientation="vertical" > 

      <TextView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:text="BLR-DEL" 
       android:layout_marginLeft="6dp" 
       android:layout_marginTop="5dp" 
       android:textStyle="bold" /> 

      <LinearLayout 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:orientation="horizontal" > 

       <ImageView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="5dp" 
        android:src="@drawable/flight_icon_result" /> 

       <ImageView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="5dp" 
        android:layout_marginLeft="25dp" 
        android:src="@drawable/time" /> 

       <ImageView 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:layout_marginTop="5dp" 
        android:layout_marginLeft="5dp" 
        android:src="@drawable/rupee" /> 
      </LinearLayout> 
     </LinearLayout> 
    </LinearLayout> 

    <LinearLayout 
      android:id="@+id/flightResultData" 
      android:layout_width="fill_parent" 
      android:layout_height="wrap_content" 
      android:layout_below="@+id/sortFlightLayouts" 
      android:layout_marginLeft="8dp" 
      android:orientation="vertical" > 
    </LinearLayout> 

    <LinearLayout 
     android:id="@+id/footerLayout" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentBottom="true" 
     android:orientation="horizontal" 
     android:background="@drawable/top_bg" > 

     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:layout_marginTop="5dp" 
      android:src="@drawable/filter" /> 
     <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:gravity="center" 
      android:layout_marginTop="5dp" 
      android:src="@drawable/sort" /> 
    </LinearLayout> 
</RelativeLayout> 

details_layout.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/mainResultLayout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:baselineAligned="false" 
    android:gravity="center" 
    android:orientation="vertical" > 

    <LinearLayout 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:orientation="horizontal" > 

     <ScrollView 
      android:id="@+id/returnScrollView" 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" > 

      <LinearLayout 
       android:id="@+id/oneWayResultData" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:orientation="horizontal" > 

       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:orientation="vertical" > 

        <ImageView 
         android:id="@+id/onewayflightLogo" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="3dp" 
         android:src="@drawable/spicejet" /> 

        <TextView 
         android:id="@+id/onewayflightName" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="SpiceJet" /> 

        <TextView 
         android:id="@+id/onewayflightNumber" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:text="9W - 496" /> 
       </LinearLayout> 

       <LinearLayout 
        android:layout_width="fill_parent" 
        android:layout_height="match_parent" 
        android:orientation="vertical" > 

        <TextView 
         android:id="@+id/onewayflightTime" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="5dp" 
         android:layout_marginTop="6dp" 
         android:minLines="1" 
         android:text="06:00 - 7:05" 
         android:textSize="12dp" /> 

        <TextView 
         android:id="@+id/onewayflightDuration" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="5dp" 
         android:minLines="1" 
         android:text="1h 35m | Non Stop" 
         android:textSize="10dp" /> 

        <TextView 
         android:id="@+id/onewayflightAmount" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="5dp" 
         android:minLines="1" 
         android:text="Rs 20,0000" 
         android:textSize="12dp" /> 
       </LinearLayout> 
      </LinearLayout> 
     </ScrollView> 

     <View 
      android:layout_width="1dp" 
      android:layout_height="60dp" 
      android:background="@android:color/darker_gray" /> 

     <ScrollView 
      android:id="@+id/returnScrollView" 
      android:layout_width="0dp" 
      android:layout_height="fill_parent" 
      android:layout_weight="1" > 

      <LinearLayout 
       android:id="@+id/returnResultData" 
       android:layout_width="fill_parent" 
       android:layout_height="wrap_content" 
       android:layout_weight="1" 
       android:orientation="horizontal" > 

       <LinearLayout 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content" 
        android:orientation="vertical" > 

        <ImageView 
         android:id="@+id/returnflightLogo" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="3dp" 
         android:src="@drawable/spicejet" /> 

        <TextView 
         android:id="@+id/returnflightName" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="3dp" 
         android:text="Spice jet" /> 

        <TextView 
         android:id="@+id/returnflightNumber" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="3dp" 
         android:text="8W - 356" /> 
       </LinearLayout> 

       <LinearLayout 
        android:layout_width="fill_parent" 
        android:layout_height="match_parent" 
        android:orientation="vertical" > 

        <TextView 
         android:id="@+id/returnflightTime" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="5dp" 
         android:layout_marginTop="6dp" 
         android:minLines="1" 
         android:text="06:00 - 7:05" 
         android:textSize="12sp" /> 

        <TextView 
         android:id="@+id/returnflightDuration" 
         android:layout_width="fill_parent" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="5dp" 
         android:minLines="1" 
         android:text="1h 35m | Non Stop" 
         android:textSize="10sp" /> 

        <TextView 
         android:id="@+id/returnflightAmount" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         android:layout_marginLeft="5dp" 
         android:minLines="1" 
         android:text="Rs 20,0000" 
         android:textSize="12sp" /> 
       </LinearLayout> 
      </LinearLayout> 
     </ScrollView> 
    </LinearLayout> 

</LinearLayout> 
+4

我並不感到驚訝,你遇到了複雜的XML佈局困難。你爲什麼不把它分解成更容易管理的,你可以膨脹進入空間。 I.e頂層有標題的佔位符,然後是兩個滾動視圖和頁腳的佔位符。然後爲每個滾動視圖行的內容創建頁眉和頁腳佈局以及佈局。我也強烈建議不要硬編碼佈局,如果你想任何機會,他們看起來不僅僅是你的開發設備正確 – o0rebelious0o

+0

我接受你的建議我是在android開發新的,但我會做這個肯定感謝一個好建議 – Developer

+0

但截至目前我需要一些問題的解決方案 – Developer

回答

1

我看了一下佈局XML和發現你的問題。在一種佈局中,您試圖定義滾動視圖及其內容。你不想這樣做。我也建議你不要滾動視圖,而是一個列表視圖。

看看This教程如何創建自定義列表視圖的內容,並創建一個arrayadapter用數據來填充它。

這是你的主要佈局如何能看一個例子:

<?xml version="1.0" encoding="utf-8"?> 

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

    <LinearLayout 
      android:id="@+id/llHeader" 
      android:orientation="vertical" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_weight="1"/> 

    <LinearLayout 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_weight="4" 
     android:orientation="horizontal"> 

     <ListView 
       android:id="@+id/lvDepartures" 
      android:layout_weight="1" 
      android:layout_height="wrap_content" 
      android:layout_width="wrap_content"/> 
     <ListView 
       android:id="@+id/lvArrivals" 
       android:layout_weight="1" 
       android:layout_height="wrap_content" 
       android:layout_width="wrap_content"/> 

    </LinearLayout> 

    <LinearLayout 
      android:id="@+id/llFooter" 
      android:orientation="vertical" 
     android:layout_height="wrap_content" 
     android:layout_width="wrap_content" 
     android:layout_weight="1"/> 

</LinearLayout> 

這給你動態加權三個垂直部分,所以它看起來在比例1中的任何設備屏幕上的相同:4:1。然後中間部分被分割成兩個可獨立滾動的列表視圖,您可以使用適配器來填充這些列表視圖。

然後,你要爲「飛行」

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content"> 

    <ImageView 
      android:layout_width="75sp" 
      android:layout_height="75sp" 
      android:layout_marginRight="10sp" 
      android:layout_marginTop="5sp" 
      android:layout_marginBottom="5sp" 
      android:id="@+id/ivDemoIcon" 
      android:layout_alignParentTop="true" 
      android:layout_alignParentLeft="true"/> 

    <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:gravity="center_vertical" 
      android:textAppearance="?android:attr/textAppearanceLarge" 
      android:text="Demo Name" 
      android:layout_marginTop="20sp" 
      android:id="@+id/tvDemoName" 
      android:layout_toRightOf="@+id/ivDemoIcon" 
      android:layout_toLeftOf="@+id/ivChevron"/> 

    <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_toRightOf="@+id/ivDemoIcon" 
      android:layout_toLeftOf="@+id/ivChevron" 
      android:text="Date Version" 
      android:id="@+id/tvDateVersion" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:layout_below="@+id/tvDemoName"/> 

    <ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:id="@+id/ivChevron" 
      android:layout_alignTop="@+id/ivDemoIcon" 
      android:layout_alignParentRight="true" 
      android:layout_alignBottom="@+id/ivDemoIcon"/> 
</RelativeLayout> 

這種佈局有兩個圖標和文本的三個部分空間創建一個單一的佈局很好的奠定了。您可以根據需要移動這些信息並根據需要創建佈局。總是嘗試儘可能使佈局儘可能通用,以便您可以反覆使用它。

然後,您可以使用您的適配器爲每個航班的每個元素填充每個航班的每個元素,並帶有這個「航班」佈局的實例(我一直懶得把它變成像您這樣的航班佈局,但您應該得到要旨)。

然後,您可以創建一個頁眉和頁腳佈局其中textviews和imageviews等,可以在運行時設置accoring你有什麼航班信息。對於航班信息,我強烈建議使用可從任何地方訪問的單例數據類,並將信息存儲在ArrayList中(列表視圖適配器等可以很好地與ArrayList一起播放,並且可以執行排序和過濾等各種酷事)

聰明編碼的美妙之處在於,儘可能使所有內容都充滿活力和可重用性。不要硬編碼的東西或創建大量的佈局,重複使用和回收!將使你的工作更容易。希望這有幫助

+0

我想這個,但我想告訴你一件事.. ..在數據的雙方將是不同的,所以我怎麼可以使用不同的循環來填充動態值 – Developer

+0

在java代碼中,您爲每個列表視圖設置一個適配器,每個適配器從數組列表或其他此類數據結構中提供數據。您的適配器,然後可以決定什麼它選擇填充列表視圖與 – o0rebelious0o

+0

我已經創建了佈局現在你會幫我我怎麼填充data.should我張貼新的XML代碼請幫助我我是新的我不是能夠理解我將如何做,請幫助我 – Developer