- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在对话框中显示一个 viewPager。所以首先我尝试了一个简单的对话框,我没有得到任何错误,但是一个空的 View ,我不知道为什么。然后我读到:a viewPager can't work with a normal Dialog you need to use a DialogFragment。
所以现在我正在使用 DialogFragment,但我仍然遇到同样的问题,没有 ViewPager,我只有我的对话框的 RelativeLayout,它显示但为空。
这是我的 DialogFragment:
public class NewFeatureDialog extends DialogFragment {
private Activity activity;
private Dialog newFeatureDialog;
private ViewPager viewPager;
private NewFeatureAdapter adapter;
private ArrayList<NewFeature> nfList;
private View view;
public NewFeatureDialog(Activity activity) {
this.activity = activity;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
view = inflater.inflate(R.layout.dialog_new_features, container);
return view;
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
fillNewFeatureList();// create my list of data
setUi();
}
private void setUi() {
viewPager = (ViewPager)view.findViewById(R.id.view_pager_new_feature);
adapter = new NewFeatureAdapter(activity, nfList);
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(0);
}
}
对话框布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/bg_demo_area"
android:orientation="vertical">
<android.support.v4.view.ViewPager
android:id="@+id/view_pager_new_feature"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</RelativeLayout>
ViewPager 适配器:
public class NewFeatureAdapter extends PagerAdapter {
private Activity activity;
private ArrayList<NewFeature> newFeatureList;
private LayoutInflater layoutInflater;
public NewFeatureAdapter(Activity activity, ArrayList<NewFeature> newFeatureList) {
this.activity = activity;
this.newFeatureList = newFeatureList;
}
@Override
public int getCount() {
return newFeatureList.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((RelativeLayout)object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
layoutInflater = LayoutInflater.from(activity);
View view = layoutInflater.inflate(R.layout.item_new_feature, container, false);
ImageView featureScreen = (ImageView) view.findViewById(R.id.image_new_feature);
TextView featureTitle = (TextView) view.findViewById(R.id.new_feature_title);
TextView featureDescription = (TextView) view.findViewById(R.id.description_new_feature);
NewFeature newFeature = newFeatureList.get(position);
if (newFeature != null) {
if (featureScreen != null) {
featureScreen.setImageResource(newFeature.getResourceImage());
}
if (featureTitle != null) {
featureTitle.setText(newFeature.getName());
}
if (featureDescription != null) {
featureDescription.setText(newFeature.getDescription());
}
}
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((RelativeLayout)object);
}
}
这里似乎一切正常。我没有任何空值或其他错误,但我的应用程序的对话框中没有显示任何内容。
我的 Activity 扩展了 Activity,我只是像这样在 dialoFragment 中使用:
FragmentManager fragmentManager = getFragmentManager();
NewFeatureDialog dialog = new NewFeatureDialog(this);
dialog.show(fragmentManager,"dialogFragment");
做我想做的事情的最佳做法是什么?是否可以使用普通对话框来显示 viewPager ?
最佳答案
所以我在这里找到了解决该问题的方法。
事实上,我忘记了 instantiateItem(..) 方法中的一行,相对于在适配器中创建的 View 需要像这样附加到我的 viewPager 容器的那一刻:
container.addView(view, 0);
这是我的 instantiateItem(..) 方法:
@Override
public Object instantiateItem(ViewGroup container, int position) {
layoutInflater = (LayoutInflater) container.getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.item_new_feature, container, false);
ImageView featureScreen = (ImageView) view.findViewById(R.id.image_new_feature);
TextView featureTitle = (TextView) view.findViewById(R.id.new_feature_title);
TextView featureDescription = (TextView) view.findViewById(R.id.description_new_feature);
NewFeature newFeature = newFeatureList.get(position);
if (newFeature != null) {
if (featureScreen != null) {
featureScreen.setImageResource(newFeature.getResourceImage());
}
if (featureTitle != null) {
featureTitle.setText(newFeature.getName());
}
if (featureDescription != null) {
featureDescription.setText(newFeature.getDescription());
}
}
container.addView(view, 0);
return view;
}
我检查过你可以在对话框中使用它,也可以在 fragment 中使用它,它工作正常。
关于android - 在对话框中使用 ViewPager 的最佳做法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29260807/
如果您想分享更多信息,可以在这里找到整个资源 指针: https://github.com/sergiotapia/DreamInCode.Net 基本上,我的API将为其他开发人员提供
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this qu
我不是 SCM 工具的经验丰富的用户,尽管我确信它们的用处,当然。 我在以前的工作中使用了一些不起眼的商业工具,在当前的工作中使用了 Perforce,并在我的小型个人项目中使用了 TortoiseS
所以我想知道一些我应该避免在 javascript 中做的事情以获得良好的 SEO 排名。在我的下一个站点中,我将广泛使用 jquery 和 javascript,但不想牺牲 SEO。那么您认为我应该
基本上,我想知道什么是避免 future CSS 代码出现问题和混淆的最佳方法... 像这样命名 CSS 属性: div#content ul#navigation div.float-left (真
我是一名优秀的程序员,十分优秀!