我在应用程序中实现了MagicIndicator库,但是无法对其进行足够的自定义。我想做的事情看起来像这样:
此处的左右四个图标是选项卡,您可以在它们之间滚动。但是中间是一个单独的按钮,可以启动单独的活动。因此,当从第二个选项卡滚动到第三个选项卡时,它只是略去了中间位置。我也想单独设置图标,我现在不知道该怎么做。 到目前为止,我的代码:
MainActivity.java:
public class MainActivity extends AppCompatActivity {
ViewPager viewPager;
PagerAdapter adapter;
private static final String[] CHANNELS = new String[]{"Dashboard", "Wallet", "Add", "Summary", "Settings"};
private List<String> mDataList = Arrays.asList(CHANNELS);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(MainActivity.this, CreateActivity.class);
startActivity(intent);
}
});
viewPager = findViewById(R.id.container);
adapter = new PagerAdapter
(getSupportFragmentManager(), 3);
viewPager.setAdapter(adapter);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
}
@Override
public void onPageScrollStateChanged(int i) {
}
});
initMagicIndicator1();
}
private void initMagicIndicator1() {
MagicIndicator magicIndicator = findViewById(R.id.magic_indicator1);
magicIndicator.setBackgroundColor(getResources().getColor(R.color.light_gray));
CommonNavigator commonNavigator = new CommonNavigator(this);
commonNavigator.setAdjustMode(true);
commonNavigator.setAdapter(new CommonNavigatorAdapter() {
@Override
public int getCount() {
return mDataList.size();
}
@Override
public IPagerTitleView getTitleView(Context context, final int index) {
CommonPagerTitleView commonPagerTitleView = new CommonPagerTitleView(context);
View customLayout = LayoutInflater.from(context).inflate(R.layout.simple_pager_title_layout, null);
final ImageView titleImg = customLayout.findViewById(R.id.title_img);
final TextView titleText = customLayout.findViewById(R.id.title_text);
titleText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10);
titleImg.setImageResource(R.drawable.dashboard_gray);
titleText.setText(mDataList.get(index));
commonPagerTitleView.setContentView(customLayout);
commonPagerTitleView.setOnPagerTitleChangeListener(new CommonPagerTitleView.OnPagerTitleChangeListener() {
@Override
public void onSelected(int index, int totalCount) {
titleText.setTextColor(getResources().getColor(R.color.colorPrimary));
titleText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12);
titleImg.setImageResource(R.drawable.dashboard_orange);
}
@Override
public void onDeselected(int index, int totalCount) {
titleText.setTextColor(getResources().getColor(R.color.gray));
titleText.setTextSize(TypedValue.COMPLEX_UNIT_SP, 10);
titleImg.setImageResource(R.drawable.dashboard_gray);
}
@Override
public void onLeave(int index, int totalCount, float leavePercent, boolean leftToRight) {
titleImg.setScaleX(1.3f + (0.8f - 1.3f) * leavePercent);
titleImg.setScaleY(1.3f + (0.8f - 1.3f) * leavePercent);
}
@Override
public void onEnter(int index, int totalCount, float enterPercent, boolean leftToRight) {
titleImg.setScaleX(0.8f + (1.3f - 0.8f) * enterPercent);
titleImg.setScaleY(0.8f + (1.3f - 0.8f) * enterPercent);
}
});
commonPagerTitleView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) { viewPager.setCurrentItem(index);
}
});
return commonPagerTitleView;
}
@Override
public IPagerIndicator getIndicator(Context context) {
return null;
}
});
magicIndicator.setNavigator(commonNavigator);
ViewPagerHelper.bind(magicIndicator, viewPager);
}
}
simple_pager_title_layout.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
android:paddingLeft="5dp"
android:paddingRight="5dp">
<ImageView
android:id="@+id/title_img"
android:layout_width="20dp"
android:layout_height="20dp" />
<TextView
android:id="@+id/title_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/gray"
android:layout_marginTop="5dp" />
</LinearLayout>
我该如何实现?任何帮助都非常有用。