qq_35071078
下课睡觉
采纳率45.7%
2017-05-17 09:12 阅读 1.2k

android listview的分页效果怎么实现?

图片说明
类似这样。有没有什么好的方法实现这种布局?android 自带的又这种布局吗?还是要自己用button来写出来?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享

9条回答 默认 最新

  • 已采纳
    sinat_28884723 TenTenXu 2017-05-20 06:08

    可以直接使用HorizontalScrollView,<!--横向滑动的容器-->
    android:id="@+id/horizontal"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:scrollbars="none">
    <!--装入每一个Tab项容器-->
    android:id="@+id/container"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"/>

    可以通过这个来做,而LinearLayout中的布局可以根据你的需要去设置,这种可以更加灵活

    点赞 1 评论 复制链接分享
  • u010434246 Android 研发 2017-05-17 09:33

    楼主:android没有这种布局。

    点赞 评论 复制链接分享
  • Caipta 游穆族人 2017-05-17 10:10

    楼主你可以看看Fragment布局,感觉改改就能变成你这个样子

    点赞 评论 复制链接分享
  • hfc123hfc123 郁闷的中交兵 2017-05-17 10:42

    动态更改adapter

    点赞 评论 复制链接分享
  • luck_nhb luck_nhb 2017-05-17 14:03

    给你个实例代码
    public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ListView lv = (ListView) findViewById(R.id.lv);
        lv.setAdapter(new MyAdapar());
    }
    

    //自定义适配器
    private class MyAdapar extends BaseAdapter {
    @Override
    public int getCount() {
    return 7;
    }

        @Override
        public Object getItem(int position) {
            return null;
        }
    
        @Override
        public long getItemId(int position) {
            return 0;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            View v=null;
            if(convertView==null){
                v=View.inflate(getApplicationContext(),R.layout.item,null);
            }else{
                v=convertView;
            }
            return v;
        }
    }
    

    }

    layout文件activity_main.xml:
    android:id="@+id/lv"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    </ListView>
    
    
    
        另外在layout中需要创建一个item.xml
        <ImageView
        android:id="@+id/iv"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:src="@mipmap/ic_launcher"
        android:padding="5dp"
        />
    
    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/iv"
        android:paddingTop="5dp"
        android:paddingLeft="10dp"
        android:textSize="20sp"
        android:text="国足出线"
        />
    
    <TextView
        android:id="@+id/message"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@id/title"
        android:layout_toRightOf="@id/iv"
        android:paddingLeft="10dp"
        android:textSize="16sp"
        android:text="重要信息,国足出线"
        />
    
    点赞 评论 复制链接分享
  • lansubao boolwallet 2017-05-17 15:05

    巧了,正在弄一个这种东西。自定义一个组件即可。下方是主文件示例代码:
    public class PageControl extends LinearLayout implements OnClickListener{
    private ImageButton firstImg;
    private ImageButton preImg;
    private ImageButton nextImg;
    private ImageButton endImg;
    private TextView totalPageText;
    private TextView curPageText;
    private int numPerPage=10;
    private int curPage=1;
    private int count=0;
    private OnPageChangeListener pageChangeListener;
    public PageControl(Context context) {
    super(context);
    initPageComposite(context);
    }
    public PageControl(Context context, AttributeSet attrs) {
    super(context, attrs);
    initPageComposite(context);
    }
    public PageControl(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    initPageComposite(context);
    }
    private void initPageComposite(Context context){
    this.setPadding(5,5,5,5);
    firstImg=new ImageButton(context);
    firstImg.setId(1);
    firstImg.setImageResource(R.drawable.firstpage);
    firstImg.setPadding(0,0,0,0);
    LayoutParams layoutParam=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    layoutParam.setMargins(0,0,5,0);
    firstImg.setLayoutParams(layoutParam);
    firstImg.setOnClickListener(this);
    this.addView(firstImg);
    preImg=new ImageButton(context);
    preImg.setId(2);
    preImg.setImageResource(R.drawable.prepage);
    preImg.setPadding(0,0,0,0);
    layoutParam=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    layoutParam.setMargins(0,0,5,0);
    preImg.setLayoutParams(layoutParam);
    preImg.setOnClickListener(this);
    this.addView(preImg);
    nextImg=new ImageButton(context);
    nextImg.setId(3);
    nextImg.setImageResource(R.drawable.nextpage);
    nextImg.setPadding(0,0,0,0);
    layoutParam=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    layoutParam.setMargins(0,0,5,0);
    nextImg.setLayoutParams(layoutParam);
    nextImg.setOnClickListener(this);
    this.addView(nextImg);
    endImg=new ImageButton(context);
    endImg.setId(4);
    endImg.setImageResource(R.drawable.lastpage);
    endImg.setPadding(0,0,0,0);
    layoutParam=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
    layoutParam.setMargins(0,0,5,0);
    endImg.setLayoutParams(layoutParam);
    endImg.setOnClickListener(this);
    this.addView(endImg);
    totalPageText=new TextView(context);
    layoutParam=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.MATCH_PARENT);
    layoutParam.setMargins(5,0,5,0);
    totalPageText.setLayoutParams(layoutParam);
    totalPageText.setText("总页数");
    this.addView(totalPageText);
    curPageText=new TextView(context);
    layoutParam=new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.MATCH_PARENT);
    layoutParam.setMargins(5,0,5,0);
    curPageText.setLayoutParams(layoutParam);
    curPageText.setText("当前页");
    this.addView(curPageText);
    }
    /**
    * 初始化分页组件的显示状态
    * @param newCount
    /
    public void initPageShow(int newCount){
    count=newCount;
    int totalPage=count%numPerPage==0?count/numPerPage:count/numPerPage+1;
    curPage=1;
    firstImg.setEnabled(false);
    preImg.setEnabled(false);
    if(totalPage<=1){
    endImg.setEnabled(false);
    nextImg.setEnabled(false);
    }else{
    endImg.setEnabled(true);
    nextImg.setEnabled(true);
    }
    totalPageText.setText("总页数 "+totalPage);
    curPageText.setText("当前页 "+curPage);
    }
    /
    *
    * 分页按钮被点击时更新状态,该方法要在initPageShow后调用
    /
    @Override
    public void onClick(View view) {
    if(pageChangeListener==null){
    return;
    }
    int totalPage=count%numPerPage==0?count/numPerPage:count/numPerPage+1;
    switch(view.getId()){
    case 1:
    curPage=1;
    firstImg.setEnabled(false);
    preImg.setEnabled(false);
    if(totalPage>1){
    nextImg.setEnabled(true);
    endImg.setEnabled(true);
    }
    break;
    case 2:
    curPage--;
    if(curPage==1){
    firstImg.setEnabled(false);
    preImg.setEnabled(false);
    }
    if(totalPage>1){
    nextImg.setEnabled(true);
    endImg.setEnabled(true);
    }
    break;
    case 3:
    curPage++;
    if(curPage==totalPage){
    nextImg.setEnabled(false);
    endImg.setEnabled(false);
    }
    firstImg.setEnabled(true);
    preImg.setEnabled(true);
    break;
    case 4:
    curPage=totalPage;
    nextImg.setEnabled(false);
    endImg.setEnabled(false);
    firstImg.setEnabled(true);
    preImg.setEnabled(true);
    break;
    default:
    break;
    }
    totalPageText.setText("总页数 "+totalPage);
    curPageText.setText("当前页 "+curPage);
    pageChangeListener.pageChanged(curPage,numPerPage);
    }
    public OnPageChangeListener getPageChangeListener() {
    return pageChangeListener;
    }
    /
    *
    * 设置分页监听事件
    * @param pageChangeListener
    */
    public void setPageChangeListener(OnPageChangeListener pageChangeListener) {
    this.pageChangeListener = pageChangeListener;
    }
    }

    点赞 评论 复制链接分享
  • qq_27969037 Mr康 2017-05-19 03:00

    这种效果只有网页里面才有吧,Android App里没有人会这样做吧

    点赞 评论 复制链接分享
  • HuoHao_Blogs huohao-nicole 2017-05-19 06:21

    好神奇,App中还真没见过这样的,并且还有人在做,有空自己也做一下

    点赞 评论 复制链接分享
  • kuaiguixs wang_android 2017-05-20 01:43

    listView是不支持横向布局的。可以用 RecyclerView。怎么使用,网上很多教程的,http://blog.csdn.net/lmj623565791/article/details/45059587

    点赞 评论 复制链接分享

相关推荐