我目前正在尝试使用ListView作为主要布局并使用相对布局作为滑动布局来实现AndroidSlidingUpPanel。这是我正在使用的XML:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<com.sothree.slidinguppanel.SlidingUpPanelLayout
xmlns:sothree="http://schemas.android.com/apk/lib/com.sothree.slidinguppanel"
android:id="@+id/bottom"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/bar_background"
android:gravity="bottom"
android:orientation="horizontal"
sothree:collapsedHeight="40dp" >
<ListView
android:id="@+id/song_list"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_weight="42"
android:fastScrollEnabled="true" />
<RelativeLayout
android:id="@+id/bottom_bar_preview"
android:layout_width="match_parent"
android:layout_height="300dp"
android:background="@color/bar_background"
android:orientation="horizontal" >
</RelativeLayout>
</com.sothree.slidinguppanel.SlidingUpPanelLayout>
</LinearLayout>
我的问题是,只有在展开和折叠滑动布局一次后,列表的内容才会显示。 SlidingUpPanelLayout本身嵌入到位于FragmentPagerAdapter内的Fragment中。我还注意到,在将两个片段滑离它(然后再返回)之后,列表的内容消失了。 这是片段的代码:
public abstract class Songs extends Fragment {
protected ArrayList<String> elements;
protected SonglistAdapter adapter;
public Songs(ArrayList<String> es) {
elements = es;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
LinearLayout rootView = (LinearLayout) inflater.inflate(R.layout.list_songlist, container, false);
ListView lview = (ListView) rootView.findViewById(R.id.song_list);
adapter = new SonglistAdapter(inflater, elements);
lview.setAdapter(adapter);
return rootView;
}
}
这里是它的适配器:
public class SonglistAdapter extends BaseAdapter {
private ArrayList<String> elements;
private LayoutInflater inflater;
public SonglistAdapter(LayoutInflater infl, ArrayList<String> es) {
elements = es;
inflater = infl;
}
@Override
public int getCount() {
return elements.size();
}
@Override
public Object getItem(int i) {
return elements.get(i);
}
@Override
public long getItemId(int i) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
RelativeLayout layer = (RelativeLayout) inflater.inflate(R.layout.list_songlist_item, parent, false);
// fill current item with information
TextView view = (TextView) layer.findViewById(R.id.song_title);
view.setText(elements.get(position));
return layer;
}
}
我在FragmentPagerAdapter中创建Fragment,如下所示:
ArrayList<String> arr = new ArrayList<String>();
arr.add("Hello");
arr.add("Bye");
ContentHandler.overviewFragment = new Overview(arr);
&#39; ContentHandler.overviewFragment&#39;然后返回&#39; public Fragment getItem(int index)&#39; (以通常的方式)。
我尝试查看AndroidSlidingUpPanel的来源,并认为该错误可能位于&{39; protected void onLayout中的this文件中(boolean changed,int l,int t,int r,int b) &#39;功能,但我发现启动调用和滑动面板重新折叠调用之间没有任何区别。 所以我的问题是,如果你们中的任何人知道我的实施有什么问题。
PS:由于这是我的第一次提交,我很乐意以任何可能的方式改进我的帖子!
答案 0 :(得分:0)
通过将ListView的layout_height
设置为match_parent