- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我必须以这种方式在 ViewPager 中自定义一个 PagerTitleStrip:
我必须用与内页对应的数字创建圆圈,中间的圆圈必须更大。有人有什么建议吗?
最佳答案
您可以使用以下代码为您的 View Pager 创建自定义 View Pager Indicator
public class SimpleViewPagerIndicator extends LinearLayout implements
OnPageChangeListener {
private static final String TAG = SimpleViewPagerIndicator.class
.getSimpleName();
private Context context;
private ViewPager pager;
private OnPageChangeListener onPageChangeListener;
private LinearLayout itemContainer;
private List<ImageView> items;
private OnClickListener itemClickListener = new OnClickListener() {
@Override
public void onClick(View v) {
int position = (Integer) v.getTag();
pager.setCurrentItem(position);
}
};
public SimpleViewPagerIndicator(Context context) {
super(context);
this.context = context;
setup();
}
public SimpleViewPagerIndicator(Context context, AttributeSet attrs) {
super(context, attrs);
this.context = context;
setup();
}
public SimpleViewPagerIndicator(Context context, AttributeSet attrs,
int defStyle) {
super(context, attrs, defStyle);
this.context = context;
setup();
}
private void setup() {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (inflater != null) {
inflater.inflate(R.layout.view_pager_indicator, this);
itemContainer = (LinearLayout) findViewById(R.id.pager_indicator_container);
items = new ArrayList<ImageView>();
}
}
/**
* Notifies the pager indicator that the data set has changed. Be sure to
* notify the pager as well (though you may wish to place that call in here
* yourself).
*/
public void notifyDataSetChanged() {
if (pager != null && pager.getAdapter() != null) {
// remove the old items (if any exist)
itemContainer.removeAllViews();
// I'm sure this could be optimised a lot more, eg,
// by reusing existing ImageViews, but it
// does the job well enough for now.
items.removeAll(items);
// now create the new items.
for (int i = 0; i < pager.getAdapter().getCount(); i++) {
ImageView item = new ImageView(context);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
lp.setMargins(5, 5, 5, 5);
item.setLayoutParams(lp);
if (i == pager.getCurrentItem()) {
item.setImageResource(R.drawable.selected_dot);
} else {
item.setImageResource(R.drawable.un_selected_dot);
}
item.setTag(i);
item.setOnClickListener(itemClickListener);
items.add(item);
itemContainer.addView(item);
}
}
}
public ViewPager getViewPager() {
return pager;
}
public void setViewPager(ViewPager pager) {
this.pager = pager;
this.pager.setOnPageChangeListener(this);
}
public OnPageChangeListener getOnPageChangeListener() {
return onPageChangeListener;
}
public void setOnPageChangeListener(
OnPageChangeListener onPageChangeListener) {
this.onPageChangeListener = onPageChangeListener;
}
private void setCurrentItem(int position) {
if (pager != null && pager.getAdapter() != null) {
int numberOfItems = pager.getAdapter().getCount();
for (int i = 0; i < numberOfItems; i++) {
ImageView item = items.get(i);
if (item != null) {
if (i == position) {
item.setImageResource(R.drawable.selected_dot);
} else {
item.setImageResource(R.drawable.un_selected_dot);
}
}
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
if (this.onPageChangeListener != null) {
this.onPageChangeListener.onPageScrollStateChanged(state);
}
}
@Override
public void onPageScrolled(int position, float positionOffset,
int positionOffsetPixels) {
if (this.onPageChangeListener != null) {
this.onPageChangeListener.onPageScrolled(position, positionOffset,
positionOffsetPixels);
}
}
@Override
public void onPageSelected(int position) {
setCurrentItem(position);
if (this.onPageChangeListener != null) {
this.onPageChangeListener.onPageSelected(position);
}
}
}
您只需更改可绘制对象即可。
关于android - 如何自定义 PagerTitleStrip android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27720221/
这是我的 PagerTitleStrip 的 XML: 以下是我的自定义 PagerAdapter 类: public class CustomPagerAdap
所以我有一个显示选项卡的应用程序,您可以在 ViewPager 的帮助下水平滚动。 我的问题是:有没有办法在 PagerTitleStrip 中隐藏相邻的标签页标题? 到目前为止,我一直无法找到动态或
我使用 FragmentAdapter 来填充带有 PagerTitleStrip 的 Viewpager(在适配器中使用 getTitle())。 一切正常(至少目前),除了一件事,当我更新其中一个
是否有机会修改 PagerTitleStrip 以显示所有页面,而不仅仅是三个。基于此,我发现可能没有。但是你能提出任何具有类似作用的替代方案吗? 最佳答案 试试这个。 public class Se
我必须以这种方式在 ViewPager 中自定义一个 PagerTitleStrip: 我必须用与内页对应的数字创建圆圈,中间的圆圈必须更大。有人有什么建议吗? 最佳答案 您可以使用以下代码为您的 V
Typeface xyz=Typeface.createFromAsset(view.getContext().getAssets(), "fonts/xyz.ttf"
问题:更新到 appcompat-v7:23.0.0 后,PagerTabStrip 和 PagerTitleStrip 都不会在第一个显示页面上显示标题(图 1),只有在滑动到另一个页面(图 2)后
有人知道怎么做吗? PagerTitleStrip 类没有 .setTypeface 方法或任何类似的方法,所以我有点困惑。 我发现的另一个回应是:您可能最好复制 PagerTitleStrip 代码
我有 PagerTitleStrip 的标准实现在 ViewPager但它不能在 ViewPager2 中工作.如果我想迁移到 ViewPager2 ,我应该如何实现PagerTitleStrip在
我正在使用一个 ViewPager,其中我可以有 3 个 PagerTabStrip。但我想要超过 3 个,也许是 4 个或 5 个。我尝试使用 setTextSpacing() 但这没有用。没有直接
我已经尝试了大约一个星期来让我的 PagerView 不与 TitleStrip 重叠。 我已经尝试了所有我能想到的方法,但有一个 StackOverflow 问题看起来是同一个问题,却得到了不适用的
我正在尝试从 pagertitlestrip 设置 textsize 和 textcolor,但找不到方法。 编辑 main.xml style.xml @sty
我决定在我的应用程序中使用 ViewPager 并且一切正常。我知道我想在我的 ViewPager 中使用 PagerTitleStrip,但我找不到任何有关如何操作的信息...我在这门课上找到的唯一
什么时候应该使用pagerTabStrip,什么时候应该使用pagerTitleStrip??? 交互式指示器和非交互式指示器这两个词实际上是什么意思?你能解释一下不同之处吗?你能告诉我用户界面是否有
背景故事: 我已经弄乱了一段时间,但找不到任何像样的文档。我不得不支持 api 级别 8,因此查看寻呼机似乎是一个很好的解决方案。我已经将它与 pagerTitleStrip 一起使用了。但是,我只希
支持 v4(版本 23.0.0)的 PagerTitleStrip 和 PagerTabStrip 存在问题。 ViewPager 使用 PagerTitleStrip 或 PagerTabStrip
使用最新的 Android 支持包 v4(2011 年 12 月),我正在尝试使用 PagerTitleStrip 实现 ViewPager 以在我的 UI 中显示三个 Pane 的标题。 我已经阅读
我有一个带有 PagerTitleStrip 的 ViewPager,它曾经正常工作...... 更新到最新的支持库(v4:23)后,PagerTitleStrip 中的文本在 onPageSelec
我在使用 PagerTitleStrip 设置标题 View 寻呼机时遇到问题。我在 View 寻呼机中添加了 PagerTitleStrip 的 subview 。 我在哪里可以提供应用于每个页面的
我目前正在我的应用程序中使用 PagerTitleStrip(文档:http://developer.android.com/reference/android/support/v4/view/Pag
我是一名优秀的程序员,十分优秀!