繁体   English   中英

Android:ScrollView 中的布局较短

[英]Android: Layout short within a ScrollView

我最近刚刚彻底检查了我的应用程序以使用 ListView 而不是使用经典的 TextView.setText 并循环布局的膨胀。 我能够很好地实现这一点,但现在我在让它填满屏幕时遇到了问题。 这是我完成工作的代码部分。

        //Place JSON data into array one item at a time
        JSONArray jArray = new JSONArray(result);
        //Loop through each record in the database
        //Get ListView
        ListView lv= (ListView)findViewById(R.id.listview);
        // create the grid item mapping
        String[] from = new String[] {"lblQuote", "lblBuzzed", "lblShared", "lblSaid", "lblLikes", "lblHates", "lblLocation", "lblDate"};
        int[] to = new int[] { R.id.lblQuote, R.id.lblBuzzed, R.id.lblShared, R.id.lblSaid, R.id.lblLikes, R.id.lblHates, R.id.lblLocation, R.id.lblDate };

        for(int i=0;i<jArray.length();i++){
            Log.i("uDrew Debug", "Made it into JSONArray Loop");

            //Get this record
            JSONObject json_data = jArray.getJSONObject(i);

            //Put each result into variables for later handling
            strFName = json_data.getString("FName");
            strLInitial = json_data.getString("LInitial");
            strCity = json_data.getString("City");
            strState = json_data.getString("State");
            strDate = json_data.getString("Date");
            strQuote = json_data.getString("Quote");
            intLikes = Integer.parseInt(json_data.getString("Likes"));
            intHates = Integer.parseInt(json_data.getString("Hates"));
            strFNameSaid = json_data.getString("FNameSaid");
            strLInitialSaid = json_data.getString("LInitialSaid");
            intBuzz = Integer.parseInt(json_data.getString("Buzz"));


            Log.i("uDrew Debug", "Made it past JSON Parsing");


            switch(intBuzz){
                case 1: 
                    strBuzzed = ("One Beer\nSyndrome");
                    break;
                case 2: 
                    strBuzzed = ("Buzzed");
                    break;
                 case 3: 
                     strBuzzed = ("Drunk");
                    break;
                 case 4: 
                     strBuzzed = ("Trashed");
                    break;
                 case 5: 
                    strBuzzed = "Retarded";
                    break;
            }                       
            HashMap<String, String> map = new HashMap<String, String>();
            map.put("lblQuote", strQuote);
            map.put("lblBuzzed", strBuzzed);
            map.put("lblShared", strFName + " " + strLInitial);
            map.put("lblSaid",strFNameSaid + " " + strLInitialSaid);
            map.put("lblDate", strDate);
            map.put("lblLocation", strCity + ", " + strState);
            map.put("lblLikes", intLikes.toString());
            map.put("lblHates", intHates.toString());
            fillMaps.add(map);



        }//End For loop
     // fill in the grid_item layout
     SimpleAdapter adapter = new SimpleAdapter(this, fillMaps, R.layout.myviews, from, to);
     lv.setAdapter(adapter);

main.xml:

<?xml version="1.0" encoding="utf-8"?>
<ScrollView 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:fillViewport="true"
    android:scrollbars="vertical">

        <LinearLayout 
            android:orientation="vertical" 
            android:id="@+id/myMainLayout" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content">   
              <com.google.ads.AdView android:id="@+id/adViewer"
                         android:layout_width="fill_parent"
                         android:layout_height="wrap_content"
                         ads:adUnitId="a14de539f600385"
                         ads:adSize="BANNER"
                         ads:loadAdOnCreate="true"/>
        <TextView 
            android:layout_height="wrap_content" 
            android:layout_width="fill_parent" 
            android:text="RandomDrunkQuotes.com" 
            android:id="@+id/lblTitle" 
            android:textSize="16px" 
            android:padding="5px" 
            android:textStyle="bold" 
            android:gravity="center_horizontal"/>

    <!-- List Divider -->
    <View android:layout_width="fill_parent"
        android:layout_height="1dip"
        android:background="?android:attr/listDivider" />

    <!-- ListView (grid_items) -->
    <LinearLayout android:id="@+id/layout"
        android:layout_width="wrap_content"
        android:layout_height="fill_parent">
        <ListView android:id="@+id/listview"
            android:layout_height="fill_parent"
            android:layout_width="fill_parent">
        </ListView>
    </LinearLayout>


</LinearLayout>
</ScrollView>

myviews.xml:

<?xml version="1.0" encoding="utf-8"?>  
<LinearLayout android:id="@+id/LinearLayout01"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content">
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
            <TextView 
                android:id="@+id/lblQuote" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Filler Text"/>
        </LinearLayout>
        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left">
           <ImageView
                android:id="@+id/imgUp"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:paddingLeft="5px"
                android:paddingRight="5px"
                android:src="@drawable/thumbsup"
                android:layout_gravity="left"/>
           <TextView 
                android:id="@+id/lblLikes" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:paddingLeft="5px"
                android:paddingRight="5px"
                android:textSize="4pt"
                android:text="10"
                android:layout_gravity="left"/>

           <TextView 
                android:id="@+id/lblBuzzedTitle" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:textSize="4pt"
                android:text="Buzz Level:"/>
            <TextView 
                android:id="@+id/lblShared" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:text="Shared By: Filler Name"
                android:textSize="4pt"/>
            <TextView 
                android:id="@+id/lblSaid" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:text="Said By: Filler Name"
                android:textSize="4pt"/> 
        </LinearLayout>
        <LinearLayout 
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="left">
            <ImageView
                android:id="@+id/imgDown"
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:paddingLeft="5px"
                android:paddingRight="5px"
                android:src="@drawable/thumbsdn"
                android:layout_gravity="center_vertical"/>
          <TextView 
                android:id="@+id/lblHates" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="0"
                android:paddingLeft="5px"
                android:paddingRight="5px"
                android:textSize="4pt"
                android:text="2"
                android:layout_gravity="center_vertical"/>

           <TextView 
                android:id="@+id/lblBuzzed" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:text="High"
                android:textSize="4pt"
                android:layout_gravity="center_vertical"/>
            <TextView 
                android:id="@+id/lblDate" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:textSize="4pt"
                android:text="04/04/1987 4:32 PM"
                android:layout_gravity="center_vertical"/>
            <TextView 
                android:id="@+id/lblLocation" 
                android:layout_width="wrap_content" 
                android:layout_height="wrap_content"
                android:layout_weight="2"
                android:textSize="4pt"
                android:text="Broomfield, CO"
                android:layout_gravity="center_vertical"/> 
        </LinearLayout>
        <LinearLayout
            android:orientation="vertical"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:weightSum="1">
          <TextView
            android:text=" "
            android:textSize="1pt"
            android:background="#6F7285"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_weight="1"/>  

        </LinearLayout>
</LinearLayout>

这是应用程序的外观:在此处输入图像描述

也没有滚动条,如果我更改 main.xml ScrolView layout_height="fill_parent" 它会延伸到屏幕的末尾,但可滚动选项不存在。

  1. 在 ScrollView 和第一个 LinearLayout 中使用android:layout_height="fill_parent"

  2. 不要将 ListView 包装在 LinearLayout 中(分隔线视图下方的那个)。 完全没有必要这样做。

  3. (可选)您可能希望将 AdView 移到 ScollView 之外,使其始终可见且不会滚动

以下代码解决了我的问题:

 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:orientation="vertical" 
android:id="@+id/BigLayout" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent"
android:fillViewport="true"
android:scrollbars="vertical">

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

        <com.google.ads.AdView android:id="@+id/adViewer"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            ads:adUnitId="a14de539f600385"
            ads:adSize="BANNER"
            ads:loadAdOnCreate="true"/>
        <TextView 
            android:layout_height="wrap_content" 
            android:layout_width="fill_parent" 
            android:text="RandomDrunkQuotes.com" 
            android:id="@+id/lblTitle" 
            android:textSize="16px" 
            android:padding="5px" 
            android:textStyle="bold" 
            android:gravity="center_horizontal"/>

        <!-- List Divider -->
        <View 
            android:layout_width="fill_parent"
            android:layout_height="1dip"
            android:background="?android:attr/listDivider" />       

    </LinearLayout>

        <!-- ListView (grid_items) -->
        <ListView 
            android:id="@+id/listview"
            android:layout_height="fill_parent"
            android:layout_width="fill_parent">
        </ListView>     

 </LinearLayout>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM