Nameless程序猿 2016-08-05 16:33 采纳率: 0%
浏览 870

动态更新布局失败,想在图片中添加button进去。

package com.example.viewpager;

import java.util.ArrayList;

import com.example.fragment2.R;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

public class ViewpagerActivity extends Activity implements OnClickListener, OnPageChangeListener {

//定义ViewPager对象
private ViewPager viewPager;
//定义ViewPager适配器
private ViewPagerAdapter vpAdapter;
//定义一个ArrayList来存放View
private ArrayList<View> views;
    //引导图片资源
    private static final int[] pics={R.drawable.guide1,R.drawable.guide2,R.drawable.guide3,R.drawable.guide4};
    //底部小点的图片
    private ImageView[] points;
    //记录当前选中位置
    private int currentIndex;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.viewpagerlayout);
        initView();
        initData();
    }
    /**
     * 初始化组件
     */
    private void initView()
    {
        //实例化ArrayList对象
        views=new ArrayList<View>();
        //实例化ViewPager
        viewPager=(ViewPager)findViewById(R.id.viewpager);
        //实例化ViewPager适配器
        vpAdapter=new ViewPagerAdapter(views);
    }
    /**
     * 初始化数据
     */
    private void initData()
    {
        //定义一个布局并设置参数
        LinearLayout.LayoutParams mParams=new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,
                                                                        LinearLayout.LayoutParams.MATCH_PARENT);
        //初始化引导图片列表
        for(int i=0;i<pics.length;i++)
        {
            ImageView iv=new ImageView(this);
            //在最后一张引导页中加入button按钮方便进入主界面
            if(i==pics.length-1)
            {

                RelativeLayout.LayoutParams params=new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT);

                Button button=new Button(this);
                button.setText("立即体验");
                button.setTextSize(24);
                params=(RelativeLayout.LayoutParams)button.getLayoutParams();
                params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
                button.setLayoutParams(params); //使layout更新
                iv.setLayoutParams(params);
                iv.setImageResource(pics[i]);


            }else{
            iv.setLayoutParams(mParams);
            iv.setImageResource(pics[i]);
            }
            views.add(iv);
        }
        //设置数据
        viewPager.setAdapter(vpAdapter);
        //设置监听
        viewPager.setOnPageChangeListener(this);
        //初始化底部小点
        initPoint();
    }
    /**
     * 初始化底部小点
     */
    private void initPoint()
    {
        LinearLayout linearLayout=(LinearLayout)findViewById(R.id.pointlayout);
        points=new ImageView[pics.length];
        //循环获得小点图片
        for(int i=0;i<pics.length;i++)
        {
            //得到一个LinearLayout下面的每一个子元素
            points[i]=(ImageView)linearLayout.getChildAt(i);
            //默认都为灰色
            points[i].setEnabled(true);
            //给每个小点设置监听
            points[i].setOnClickListener(this);
            //设置位置tag,方便取出与当前位置对应
            points[i].setTag(i);
        }
        //设置当前默认的位置
        currentIndex=0;
    }
    /**
     * 当滑动状态改变时调用
     * 
     */

@Override
public void onPageScrollStateChanged(int arg0) {
    // TODO Auto-generated method stub

}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
    // TODO Auto-generated method stub

}


@Override
public void onPageSelected(int arg0) {
    // TODO Auto-generated method stub
    //设置底部小点选中状态
    setCurDot(arg0);
}
/**
 * 设置当前页面的位置
 */
private void setCurView(int position)
{
    if(position<0||position>=pics.length)
    {
        return;
    }
    viewPager.setCurrentItem(position);
}
/**
 * 设置当前的小点的位置
 */
private void setCurDot(int position)
{
    if(position<0||position>pics.length-1||currentIndex==position)
    {
        return;
    }
    points[position].setEnabled(false);
    points[currentIndex].setEnabled(true);
    currentIndex=position;
}
/**
 * 通过点击事件来切换当前的页面
 */
@Override
public void onClick(View v) {
    // TODO Auto-generated method stub
    int position =(Integer)v.getTag();
    setCurView(position);
    setCurDot(position);
}

}
图片说明

  • 写回答

1条回答 默认 最新

  • Littlechoc 2016-08-05 16:56
    关注

    params=(RelativeLayout.LayoutParams)button.getLayoutParams();这句话不需要

    评论

报告相同问题?

悬赏问题

  • ¥15 chaquopy python 安卓
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 有没有帮写代码做实验仿真的
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥30 vmware exsi重置后登不上
  • ¥15 易盾点选的cb参数怎么解啊
  • ¥15 MATLAB运行显示错误,如何解决?
  • ¥15 c++头文件不能识别CDialog
  • ¥15 Excel发现不可读取的内容
  • ¥15 关于#stm32#的问题:CANOpen的PDO同步传输问题