所以我正在使用listview(实际上是PullToRefresh)
当我指定我希望视图填充父级时,它实际上超出了屏幕。通过看到滚动条消失但我仍然可以滚动一点来注意到这一点。
这是我在xml中的观点:
<eu.erikw.PullToRefreshListView
android:id="@+id/transactionList"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_column="0"
android:layout_gravity="top"
gridlayout:layout_columnSpan="2"
gridlayout:layout_row="1"
android:background="@android:color/white"
android:cacheColorHint="@android:color/white"
android:isScrollContainer="false" />
作为一个黑客,我可以使用以下代码在我的Galaxy Nexus上修复此问题,此修复程序是特定于设备的,因为在Galxay SII上查看时,屏幕底部有一个间隙。我觉得它与像素密度有关。
请注意,下面的290值最初为120,因为这是屏幕顶部视图的组合高度。然后我将它改为290以获得完美契合。不知道额外的170来自哪里。
timelineList = (PullToRefreshListView)getActivity().findViewById(R.id.timelineList);
WindowManager wm = (WindowManager)getActivity().getSystemService(Context. WINDOW_SERVICE);
int height = wm.getDefaultDisplay().getHeight() - 290;
int width = wm.getDefaultDisplay().getWidth();
GridLayout.LayoutParams glp = new GridLayout.LayoutParams(); //LayoutParams.FILL_PARENT,height/2);
glp. height = height;
glp. width = width;
timelineList .setLayoutParams(glp);
关于为什么会发生这种情况或如何为所有设备修复它的任何想法?
更新:完整版面文件
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:gridlayout="http://schemas.android.com/apk/res/com.product.package"
android:id="@+id/content_frame"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg_default_2x"
android:isScrollContainer="false"
android:orientation="vertical" >
<include
android:layout_gravity="top"
layout="@layout/header_bar" />
<ProgressBar
android:id="@+id/prgLoading"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<com.gridlayout.GridLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top"
android:layout_marginTop="45dip"
gridlayout:columnCount="2"
gridlayout:rowCount="2" >
<ImageView
android:layout_width="wrap_content"
android:layout_height="75dp"
android:layout_column="0"
gridlayout:layout_columnSpan="2"
gridlayout:layout_row="0"
gridlayout:layout_rowSpan="1"
android:background="@drawable/profile_bg_2x"
android:contentDescription="@string/bg_image" >
</ImageView>
<ImageView
android:id="@+id/imgAvatar"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_column="0"
android:layout_marginLeft="25dp"
android:layout_marginTop="11dip"
gridlayout:layout_row="0"
android:background="#FFFFFF"
android:contentDescription="@string/Product"
android:src="@drawable/profile_photo_placeholder" />
<ImageView
android:id="@+id/imgProductLogo"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_column="1"
android:layout_gravity="right"
android:layout_marginRight="10dp"
android:layout_marginTop="11dip"
gridlayout:layout_row="0"
android:contentDescription="@string/Product"
android:src="@drawable/Productlogo" />
<ListView
android:id="@+id/timelineList"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_gravity="top"
gridlayout:layout_columnSpan="2"
gridlayout:layout_row="1"
android:background="@android:color/white"
android:cacheColorHint="@android:color/white"
android:fastScrollEnabled="false" />
<TextView
android:id="@+id/timelineEmptyMessage"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_marginLeft="25dp"
android:layout_marginRight="25dp"
android:layout_marginTop="50dp"
gridlayout:layout_columnSpan="2"
gridlayout:layout_row="1"
android:gravity="center"
android:text="@string/timeline_blank_message"
android:textColor="@color/purple_text"
android:visibility="invisible" />
</com.gridlayout.GridLayout>
</LinearLayout>
</FrameLayout>
答案 0 :(得分:0)
您可以尝试使用其他PullToRefresh实现for example如果您有相同的错误,那么我们需要尝试修复othervise make issue-report给PullToRefreshListView的开发人员并且只使用其他librarry
答案 1 :(得分:0)
我通过将我的列表视图移动到GridLayout之外来解决问题,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:gridlayout="http://schemas.android.com/apk/res/com.product.package"
android:id="@+id/content_frame"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/bg_default_2x"
android:isScrollContainer="false"
android:orientation="vertical" >
<include
android:layout_gravity="top"
layout="@layout/header_bar" />
<ProgressBar
android:id="@+id/prgLoading"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center" />
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<com.gridlayout.GridLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_gravity="top"
android:layout_marginTop="45dip"
gridlayout:columnCount="2"
gridlayout:rowCount="2" >
<!-- ## OTHER VIEWS HERE -->
</com.gridlayout.GridLayout>
<ListView
android:id="@+id/timelineList"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_column="0"
android:layout_gravity="top"
gridlayout:layout_columnSpan="2"
gridlayout:layout_row="1"
android:background="@android:color/white"
android:cacheColorHint="@android:color/white"
android:fastScrollEnabled="false" />
</LinearLayout>
</FrameLayout>