怎么让linearlayout在动态添加图片显示的时候,始终只显示五个,每次添加图片后,自动水平移动,屏幕中间值显示五个图片。

解决方案 »

  1.   

    在里面加一个横向的ScrollView, 图片宽度为父控件宽度1/5,动态添加的时候设定ScrollView的滚动位置.
      

  2.   

    那我如何控制显示linearlayout始终都是最右边的一个图片是显示最后一个呢?
      

  3.   


    顺序动态插入到linearlayout,然后把SCROLLVIEW 滚到底,就能保证显示的是最新的5个,并且最右是最新.
      

  4.   

    我现在已经能把全部动态添加的图片显示出来了 但是不知道如何将HorizontalScrollView滚到底部,求demo
      

  5.   


    顺序动态插入到linearlayout,然后把SCROLLVIEW 滚到底,就能保证显示的是最新的5个,并且最右是最新.  就差最后一个显示到底部了 哥 求详细点
      

  6.   


    顺序动态插入到linearlayout,然后把SCROLLVIEW 滚到底,就能保证显示的是最新的5个,并且最右是最新.  就差最后一个显示到底部了 哥 求详细点你可以用scrollTo 或 scrollBy, 前者是滚动到某一坐标,后者是滚动的某一距离
      

  7.   


    顺序动态插入到linearlayout,然后把SCROLLVIEW 滚到底,就能保证显示的是最新的5个,并且最右是最新.  就差最后一个显示到底部了 哥 求详细点你可以用scrollTo 或 scrollBy, 前者是滚动到某一坐标,后者是滚动的某一距离
      问题就在这里了 我不知道如何得到这些图片的坐标。 这是我图片显示的代码  我不知道这 X  Y的值如何确定 我要达到的效果是始终显示到最后一张图片 不管前面的做坐标 你能帮我确定一下这个X Y的值么
      

  8.   


    顺序动态插入到linearlayout,然后把SCROLLVIEW 滚到底,就能保证显示的是最新的5个,并且最右是最新.  就差最后一个显示到底部了 哥 求详细点你可以用scrollTo 或 scrollBy, 前者是滚动到某一坐标,后者是滚动的某一距离
      问题就在这里了 我不知道如何得到这些图片的坐标。 这是我图片显示的代码  我不知道这 X  Y的值如何确定 我要达到的效果是始终显示到最后一张图片 不管前面的做坐标 你能帮我确定一下这个X Y的值么
    ...我们做的项目是要滚动到中间,是自己算的...要不你试下这个吧 HorizontalScrollView.fullScroll (HorizontalScrollView.FOCUS_RIGHT);
      

  9.   


    顺序动态插入到linearlayout,然后把SCROLLVIEW 滚到底,就能保证显示的是最新的5个,并且最右是最新.  就差最后一个显示到底部了 哥 求详细点你可以用scrollTo 或 scrollBy, 前者是滚动到某一坐标,后者是滚动的某一距离
      问题就在这里了 我不知道如何得到这些图片的坐标。 这是我图片显示的代码  我不知道这 X  Y的值如何确定 我要达到的效果是始终显示到最后一张图片 不管前面的做坐标 你能帮我确定一下这个X Y的值么
    ...我们做的项目是要滚动到中间,是自己算的...要不你试下这个吧 HorizontalScrollView.fullScroll (HorizontalScrollView.FOCUS_RIGHT);
     不行 完全不认识这个方法。
      

  10.   


    顺序动态插入到linearlayout,然后把SCROLLVIEW 滚到底,就能保证显示的是最新的5个,并且最右是最新.  就差最后一个显示到底部了 哥 求详细点你可以用scrollTo 或 scrollBy, 前者是滚动到某一坐标,后者是滚动的某一距离
      问题就在这里了 我不知道如何得到这些图片的坐标。 这是我图片显示的代码  我不知道这 X  Y的值如何确定 我要达到的效果是始终显示到最后一张图片 不管前面的做坐标 你能帮我确定一下这个X Y的值么
    ...我们做的项目是要滚动到中间,是自己算的...要不你试下这个吧 HorizontalScrollView.fullScroll (HorizontalScrollView.FOCUS_RIGHT);
     不行 完全不认识这个方法。
    我写的这三个方法都是HorizontalScrollView的,不是ImageView的.
    你得在ImageView控件的父控件LinearLayout外边套一个HorizontalScrollView,再高用这个HorizontalScrollView的fullScroll 方法
      

  11.   


    顺序动态插入到linearlayout,然后把SCROLLVIEW 滚到底,就能保证显示的是最新的5个,并且最右是最新.  就差最后一个显示到底部了 哥 求详细点你可以用scrollTo 或 scrollBy, 前者是滚动到某一坐标,后者是滚动的某一距离
      问题就在这里了 我不知道如何得到这些图片的坐标。 这是我图片显示的代码  我不知道这 X  Y的值如何确定 我要达到的效果是始终显示到最后一张图片 不管前面的做坐标 你能帮我确定一下这个X Y的值么
    ...我们做的项目是要滚动到中间,是自己算的...要不你试下这个吧 HorizontalScrollView.fullScroll (HorizontalScrollView.FOCUS_RIGHT);
     不行 完全不认识这个方法。
    我写的这三个方法都是HorizontalScrollView的,不是ImageView的.
    你得在ImageView控件的父控件LinearLayout外边套一个HorizontalScrollView,再高用这个HorizontalScrollView的fullScroll 方法 知道啊  我老早就嵌套了啊   但是刚刚第三个方法不认识  然后  int a=iv.getScrollY(); int b= iv.getScrollX(); 的值 永远是0  为什么?
      

  12.   


    为0值的原因你可以参考下 http://bbs.csdn.net/topics/390041147第三个方法应该是认识的... 这样吧我一会写个Sample你自己看下.
      

  13.   

    额 我刚刚试了下  发现移动的是图片 不是linearlayout  是因为我显示图片是在imageview显示的原因么?我换成scrollview 是不是就可以了? 还有就是刚刚那些方法不认识的原因是 我vi是imageview   但是Scrollview 显示图片的方式是什么 我找不到SET的方法。没用过之前  大哥帮忙科普一下
      

  14.   


    activity_scrollexample.xml
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="match_parent" android:layout_height="match_parent">
        <HorizontalScrollView android:id="@+id/scroll"
            android:layout_width="match_parent" android:layout_height="500dp">
            <LinearLayout android:id="@+id/container"
    android:orientation="horizontal"
                android:layout_width="wrap_content" android:layout_height="500dp"/>
        </HorizontalScrollView>
        <Button android:id="@+id/adder"
            android:layout_width="wrap_content" android:layout_height="wrap_content"
            android:text="点此添加元素"/>
    </LinearLayout>ScrollExampleActivity.java
    package com.example.helloworld;import android.app.ActionBar.LayoutParams;
    import android.app.Activity;
    import android.content.Context;
    import android.graphics.Color;
    import android.os.Bundle;
    import android.view.Gravity;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.HorizontalScrollView;
    import android.widget.LinearLayout;
    import android.widget.TextView;
    public class ScrollExampleActivity extends Activity implements OnClickListener{ final static int []COLORS={Color.YELLOW, Color.CYAN,Color.DKGRAY,Color.LTGRAY,Color.RED,Color.BLUE,Color.YELLOW,Color.GRAY,Color.MAGENTA}; final static int CHILD_WIDTH=100;
    final static int CHILD_HEIGHT=100;
    final static int APPEAR_CHILD_MAX=5;

    HorizontalScrollView scroller;
    LinearLayout container;
    Button adder;

    Runnable runner;

    int childCount=0;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    this.setContentView(R.layout.activity_scrollexample);

    scroller=(HorizontalScrollView)findViewById(R.id.scroll);
    container=(LinearLayout)findViewById(R.id.container);
    adder=(Button)findViewById(R.id.adder);

    scroller.setLayoutParams(new LinearLayout.LayoutParams(APPEAR_CHILD_MAX*CHILD_WIDTH, CHILD_HEIGHT));

    adder.setOnClickListener(this);
    } @Override
    public void onClick(View v) {
    switch(v.getId()){
    case R.id.adder:
    addElement();
    break;
    }
    }

    private void addElement(){
    container.addView(new childView(this,++childCount));

    if (runner != null) {
    container.removeCallbacks(runner);
        }

    runner = new Runnable() {
                public void run() {
             scroller.fullScroll(HorizontalScrollView.FOCUS_RIGHT);
                    runner = null;
                }
            };
            container.post(runner);
            
    } private class childView extends TextView{

    public childView(Context context, int childIndex) {
    super(context);
    this.setGravity(Gravity.CENTER);
    this.setText(String.valueOf(childIndex));
    this.setBackgroundColor(COLORS[childIndex%COLORS.length]);
    this.setLayoutParams(new LinearLayout.LayoutParams(CHILD_WIDTH,CHILD_HEIGHT));
    }
    }
    }
      

  15.   


    scrollview里面只能有一个直接子view,所以不能把imageview放到里面去,只能是scrollview里面一个viewgroup(比如linearlayout),然后再使用viewgroup.addview等方法将图片加到里面去,比如:LinearLayout.addView(ImageView);
      

  16.   

    adder.setOnClickListener(this);private void addElement()我不理解这两个方法的用法 能帮忙备注一下么
      

  17.   


    adder.setOnClickListener(this);是把那个button的单击事件交给activity去处理
    addElement()是自己写的一个方法,当每次单击BUTTON的时候添加一个元素到LinearLayout你把代码复制了建个新项目跑一下就什么都明白了.
      

  18.   


    adder.setOnClickListener(this);是把那个button的单击事件交给activity去处理
    addElement()是自己写的一个方法,当每次单击BUTTON的时候添加一个元素到LinearLayout你把代码复制了建个新项目跑一下就什么都明白了. 大哥 我现在是每次点击button 得到一张图片 是不是只要把这个bmp 换成你之前用的颜色为背景就可以了? 
      

  19.   


    adder.setOnClickListener(this);是把那个button的单击事件交给activity去处理
    addElement()是自己写的一个方法,当每次单击BUTTON的时候添加一个元素到LinearLayout你把代码复制了建个新项目跑一下就什么都明白了. 大哥 我现在是每次点击button 得到一张图片 是不是只要把这个bmp 换成你之前用的颜色为背景就可以了? 嗯,我只是给你写了个例子,你需要把这里面的关键代码整合到你自己的项目中去.
    你把那个TextView替换成你自己的ImageView,然后新的图片过来的时候执行一次addElement()就可以了.
      

  20.   


    adder.setOnClickListener(this);是把那个button的单击事件交给activity去处理
    addElement()是自己写的一个方法,当每次单击BUTTON的时候添加一个元素到LinearLayout你把代码复制了建个新项目跑一下就什么都明白了. 大哥 我现在是每次点击button 得到一张图片 是不是只要把这个bmp 换成你之前用的颜色为背景就可以了? 嗯,我只是给你写了个例子,你需要把这里面的关键代码整合到你自己的项目中去.
    你把那个TextView替换成你自己的ImageView,然后新的图片过来的时候执行一次addElement()就可以了. 我实现了图片的显示了 但是最后一个问题,testview显示的数字 我如何控制他  让他显示在图片的正下方?
      

  21.   


    private class childView extends TextView{

    public childView(Context context, int childIndex) {
    super(context);
    this.setGravity(Gravity.BOTTOM|Gravity.CENTER_HORIZONTAL);
    this.setText(String.valueOf(childIndex));
    this.setBackgroundColor(COLORS[childIndex%COLORS.length]);
    this.setLayoutParams(new LinearLayout.LayoutParams(CHILD_WIDTH,CHILD_HEIGHT));
    }
    }上面那部分代码改成红色标注的.
      

  22.   

    那我如何控制显示linearlayout始终都是最右边的一个图片是显示最后一个呢?
    用scrollview吧