gpt4 book ai didi

android - 以编程方式创建/添加 View 寻呼机

转载 作者:行者123 更新时间:2023-11-29 01:34:54 26 4
gpt4 key购买 nike

我无法以编程方式创建和添加 View 寻呼机。

我找到了这个问题Android create ViewPager programmatically但接受的答案对我不起作用。

相关代码如下。

           ImagesPagerAdapter mImagePagerAdapter = new ImagesPagerAdapter(getActivity(), mProduct.getImages());
ViewPager mImagePager = (ViewPager) inflater.inflate(R.layout.partial_view_pager, null);
mImagePager.setAdapter(mImagePagerAdapter);
rootView.add(mImagePager);

我也试过修改第二行,但没有效果:

           ViewPager mImagePager = new ViewPager(getActivity());

View 寻呼机只是没有出现在呈现的布局中。如果我调试,我可以看到它实例化了 View ,但它们只是不显示。我尝试按照解决方案中的建议添加 id,并在布局 partial_view_layout 中设置 id。

唯一似乎可行的是,如果我直接在布局中通过 xml 添加 View 寻呼机。这不是我的选择,因为我希望能够将多个 View 寻呼机添加到同一布局。

有什么想法吗?

最佳答案

您的问题很重要,它不仅适用于 ViewPager,而且实际上适用于一般情况:“如何动态创建 View ?”

三个步骤:

  • 设置 View 对象
  • 设置LayoutParams(以便 View 可以告诉布局它想要的大小等)
  • 将它添加到您希望它出现的 View 层次结构中

对于 ViewPager,您缺少一些细节:

// this is the container for the ViewPager
FrameLayout mRootView;
mRootView = (FrameLayout) findViewById(R.id.root_layout);

ViewPager viewPager = new ViewPager(this);

viewPager.setId(View.generateViewId()); // --> this is important!

viewPager.setAdapter(new CustomViewPagerAdapter(getSupportFragmentManager(), this));

// --> Important! *
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);

viewPager.setLayoutParams(params);

// --> Important!
mRootView.addView(viewPager, viewPager.getLayoutParams());

最后一点,根据您使用的 Layout,您必须更改您使用的 LayoutParams:

即。

RelativeLayout -> RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(...)

LinearLayout -> LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(...)

关于android - 以编程方式创建/添加 View 寻呼机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28931518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com