Browse Source

feat: 存在问题的视图

master
niushuai233 1 year ago
parent
commit
3940ae91b5
  1. 2
      app/build.gradle
  2. 121
      app/src/main/java/cc/niushuai/dididone/biz/BizGlobal.java
  3. 4
      app/src/main/java/cc/niushuai/dididone/ui/base/BaseFragment.java
  4. 2
      app/src/main/java/cc/niushuai/dididone/ui/calendar/CalendarFragment.java
  5. 5
      app/src/main/java/cc/niushuai/dididone/ui/statistic/MyPagerAdapter.java
  6. 27
      app/src/main/java/cc/niushuai/dididone/ui/statistic/StatisticFragment.java
  7. 46
      app/src/main/java/cc/niushuai/dididone/ui/statistic/charts/BaseChartFragment.java
  8. 48
      app/src/main/java/cc/niushuai/dididone/ui/statistic/charts/ListFragment.java
  9. 19
      app/src/main/res/layout/fragment_stat_list.xml
  10. 11
      app/src/main/res/layout/fragment_statistic.xml

2
app/build.gradle

@ -67,6 +67,8 @@ dependencies {
// calendar // calendar
// implementation 'com.github.angcyo:CalendarView:3.7.1.37' // implementation 'com.github.angcyo:CalendarView:3.7.1.37'
implementation 'com.necer.ncalendar:ncalendar:5.0.2' implementation 'com.necer.ncalendar:ncalendar:5.0.2'
//
implementation 'com.github.loper7:DateTimePicker:0.6.3'
// //
implementation "com.github.skydoves:colorpickerview:2.3.0" implementation "com.github.skydoves:colorpickerview:2.3.0"
// fab // fab

121
app/src/main/java/cc/niushuai/dididone/biz/BizGlobal.java

@ -7,9 +7,12 @@ import android.widget.LinearLayout;
import android.widget.RelativeLayout; import android.widget.RelativeLayout;
import android.widget.TextView; import android.widget.TextView;
import com.loper7.date_time_picker.DateTimeConfig;
import com.loper7.date_time_picker.dialog.CardDatePickerDialog;
import com.mikepenz.iconics.IconicsDrawable; import com.mikepenz.iconics.IconicsDrawable;
import com.mikepenz.iconics.view.IconicsImageView; import com.mikepenz.iconics.view.IconicsImageView;
import java.util.ArrayList;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -28,6 +31,8 @@ import cn.hutool.core.date.DateUtil;
import io.reactivex.Flowable; import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
/** /**
* 业务全局对象 * 业务全局对象
@ -101,44 +106,44 @@ public class BizGlobal {
} }
public static RelativeLayout getItemLayout(Context context, Project project, Record record) { public static RelativeLayout getItemLayout(Context context, Project project, Record record) {
// 外层layout 白色背景 存在边距 // 外层layout 白色背景 存在边距
RelativeLayout itemLayout = new RelativeLayout(context); RelativeLayout itemLayout = new RelativeLayout(context);
RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 175); RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, 175);
layoutParams.setMargins(25, 20, 25, 15); layoutParams.setMargins(25, 20, 25, 15);
itemLayout.setId(IntSnowflake.next_id()); itemLayout.setId(IntSnowflake.next_id());
itemLayout.setLayoutParams(layoutParams); itemLayout.setLayoutParams(layoutParams);
itemLayout.setPadding(15, 15, 15, 5); itemLayout.setPadding(15, 15, 15, 5);
itemLayout.setBackgroundResource(R.drawable.bg_miui10); itemLayout.setBackgroundResource(R.drawable.bg_miui10);
// itemLayout.setOrientation(LinearLayout.VERTICAL); // itemLayout.setOrientation(LinearLayout.VERTICAL);
// projectIcon layout // projectIcon layout
RelativeLayout.LayoutParams iconLayout = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); RelativeLayout.LayoutParams iconLayout = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
iconLayout.setMargins(10, 5, 0, 0); iconLayout.setMargins(10, 5, 0, 0);
IconicsImageView iconView = new IconicsImageView(context); IconicsImageView iconView = new IconicsImageView(context);
int iconViewId = IntSnowflake.next_id(); int iconViewId = IntSnowflake.next_id();
iconView.setId(iconViewId); iconView.setId(iconViewId);
iconView.setLayoutParams(iconLayout); iconView.setLayoutParams(iconLayout);
IconicsDrawable icon = new IconicsDrawable(context); IconicsDrawable icon = new IconicsDrawable(context);
icon.icon(project.getIcon()).color(project.getIconColor()).sizeDp(50); icon.icon(project.getIcon()).color(project.getIconColor()).sizeDp(50);
iconView.setIcon(icon); iconView.setIcon(icon);
itemLayout.addView(iconView); itemLayout.addView(iconView);
RelativeLayout.LayoutParams projectLayout = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); RelativeLayout.LayoutParams projectLayout = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
projectLayout.setMargins(20, 5, 0, 0); projectLayout.setMargins(20, 5, 0, 0);
projectLayout.addRule(RelativeLayout.RIGHT_OF, iconViewId); projectLayout.addRule(RelativeLayout.RIGHT_OF, iconViewId);
int projectNameViewId = IntSnowflake.next_id(); int projectNameViewId = IntSnowflake.next_id();
TextView projectTextView = getTextView(context, projectNameViewId, record.getName(), projectLayout, R.color._333333, 16, Gravity.CENTER_VERTICAL); TextView projectTextView = getTextView(context, projectNameViewId, record.getName(), projectLayout, R.color._333333, 16, Gravity.CENTER_VERTICAL);
itemLayout.addView(projectTextView); itemLayout.addView(projectTextView);
RelativeLayout.LayoutParams dateLayout = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT); RelativeLayout.LayoutParams dateLayout = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
dateLayout.setMargins(20, 25, 0, 0); dateLayout.setMargins(20, 25, 0, 0);
dateLayout.addRule(RelativeLayout.RIGHT_OF, iconViewId); dateLayout.addRule(RelativeLayout.RIGHT_OF, iconViewId);
dateLayout.addRule(RelativeLayout.BELOW, projectNameViewId); dateLayout.addRule(RelativeLayout.BELOW, projectNameViewId);
TextView dateTextView = getTextView(context, IntSnowflake.next_id(), DateUtil.date(record.getCreateDate()).toString(DatePattern.NORM_DATETIME_PATTERN), dateLayout, R.color._666666, 12, Gravity.TOP); TextView dateTextView = getTextView(context, IntSnowflake.next_id(), DateUtil.date(record.getCreateDate()).toString(DatePattern.NORM_DATETIME_PATTERN), dateLayout, R.color._666666, 12, Gravity.TOP);
itemLayout.addView(dateTextView); itemLayout.addView(dateTextView);
return itemLayout; return itemLayout;
} }
private static TextView getTextView(Context context, int id, String text, ViewGroup.LayoutParams textLayoutParams, int textColor, int textSize, int gravity) { private static TextView getTextView(Context context, int id, String text, ViewGroup.LayoutParams textLayoutParams, int textColor, int textSize, int gravity) {
@ -152,4 +157,48 @@ public class BizGlobal {
textView.setGravity(gravity); textView.setGravity(gravity);
return textView; return textView;
} }
public static void buildCardDatePickerDialog(Context context, String title,
Long defaultDate, Long minDate, Long maxDate, boolean showTime,
String confirmTxt, Function1<Long, Unit> unitFunction) {
CardDatePickerDialog.Builder builder = new CardDatePickerDialog.Builder(context);
builder.setTitle(title)
.setBackGroundModel(CardDatePickerDialog.STACK)
.showBackNow(false)
.setWrapSelectorWheel(false)
.showDateLabel(true)
.showFocusDateInfo(true)
.setOnChoose(confirmTxt, unitFunction);
if (null != defaultDate) {
builder.setDefaultTime(defaultDate);
}
List<Integer> displayTypeList = new ArrayList<>(6);
displayTypeList.add(DateTimeConfig.YEAR);
displayTypeList.add(DateTimeConfig.MONTH);
displayTypeList.add(DateTimeConfig.DAY);
if (showTime) {
displayTypeList.add(DateTimeConfig.HOUR);
displayTypeList.add(DateTimeConfig.MIN);
displayTypeList.add(DateTimeConfig.SECOND);
}
builder.setDisplayType(displayTypeList);
if (null != minDate) {
builder.setMinTime(minDate);
}
if (null != maxDate) {
builder.setMaxTime(maxDate);
}
builder.build().show();
}
public static Long getTextViewDate(TextView textView) {
return DateUtil.parseDate(textView.getText().toString()).getTime();
}
} }

4
app/src/main/java/cc/niushuai/dididone/ui/base/BaseFragment.java

@ -9,6 +9,8 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import cc.niushuai.dididone.util.XLog;
public abstract class BaseFragment extends Fragment implements InitAndSetListener { public abstract class BaseFragment extends Fragment implements InitAndSetListener {
@ -26,6 +28,8 @@ public abstract class BaseFragment extends Fragment implements InitAndSetListene
init(); init();
setListeners(); setListeners();
XLog.d("{} onViewCreated", getId());
} }
} }

2
app/src/main/java/cc/niushuai/dididone/ui/calendar/CalendarFragment.java

@ -85,6 +85,8 @@ public class CalendarFragment extends Fragment {
private void init() { private void init() {
initPointList(); initPointList();
binding.miui10Calendar.setInitializeDate(DateUtil.date().toDateStr());
// 构建弹出框内容 // 构建弹出框内容
// fetchNewestActionButtonData(); // fetchNewestActionButtonData();

5
app/src/main/java/cc/niushuai/dididone/ui/statistic/MyPagerAdapter.java

@ -1,15 +1,18 @@
package cc.niushuai.dididone.ui.statistic; package cc.niushuai.dididone.ui.statistic;
import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentPagerAdapter; import androidx.fragment.app.FragmentPagerAdapter;
import androidx.fragment.app.FragmentStatePagerAdapter;
import java.util.List; import java.util.List;
import cc.niushuai.dididone.ui.statistic.charts.BaseChartFragment; import cc.niushuai.dididone.ui.statistic.charts.BaseChartFragment;
public class MyPagerAdapter extends FragmentPagerAdapter { public class MyPagerAdapter extends FragmentStatePagerAdapter {
List<BaseChartFragment> fragmentList; List<BaseChartFragment> fragmentList;
//构造方法,方便之后赋值调用 //构造方法,方便之后赋值调用

27
app/src/main/java/cc/niushuai/dididone/ui/statistic/StatisticFragment.java

@ -6,11 +6,11 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
import com.flyco.tablayout.SlidingTabLayout;
import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayout;
import java.util.ArrayList; import java.util.ArrayList;
@ -27,6 +27,7 @@ import cc.niushuai.dididone.ui.statistic.charts.WeekFragment;
public class StatisticFragment extends Fragment { public class StatisticFragment extends Fragment {
private FragmentStatisticBinding binding; private FragmentStatisticBinding binding;
List<BaseChartFragment> fragments = new ArrayList<>(4);;
public View onCreateView(@NonNull LayoutInflater inflater, public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) { ViewGroup container, Bundle savedInstanceState) {
@ -36,23 +37,31 @@ public class StatisticFragment extends Fragment {
binding = FragmentStatisticBinding.inflate(inflater, container, false); binding = FragmentStatisticBinding.inflate(inflater, container, false);
View root = binding.getRoot(); View root = binding.getRoot();
ViewPager viewPager = binding.statViewpager; ViewPager viewPager = binding.statViewpager;
SlidingTabLayout tabLayout = binding.statTabLayout; // SlidingTabLayout tabLayout = binding.statTabLayout;
TabLayout tabLayout = binding.statTabLayout;
// 初始化所有的fragment // 初始化所有的fragment
List<BaseChartFragment> fragments = new ArrayList<>(); if (fragments.isEmpty()) {
fragments.add(new ListFragment()); fragments.add(new ListFragment());
fragments.add(new WeekFragment()); fragments.add(new WeekFragment());
fragments.add(new MonthFragment()); fragments.add(new MonthFragment());
fragments.add(new OtherFragment()); fragments.add(new OtherFragment());
}
viewPager.setOffscreenPageLimit(1);
MyPagerAdapter adapter = new MyPagerAdapter(getActivity().getSupportFragmentManager(), fragments); MyPagerAdapter adapter = new MyPagerAdapter(getActivity().getSupportFragmentManager(), fragments);
//绑定adapter //绑定adapter
viewPager.setAdapter(adapter); viewPager.setAdapter(adapter);
//绑定viewPager //绑定viewPager
List<String> titles = fragments.stream().map(BaseChartFragment::getTitle).collect(Collectors.toList()); List<String> titles = fragments.stream().map(BaseChartFragment::getTitle).collect(Collectors.toList());
tabLayout.setViewPager(viewPager, titles.toArray(new String[0])); tabLayout.setupWithViewPager(viewPager);
//设置标题
for (int i = 0; i < titles.size(); i++) {
tabLayout.getTabAt(i).setText(titles.get(i));
}
return root; return root;
} }

46
app/src/main/java/cc/niushuai/dididone/ui/statistic/charts/BaseChartFragment.java

@ -1,18 +1,19 @@
package cc.niushuai.dididone.ui.statistic.charts; package cc.niushuai.dididone.ui.statistic.charts;
import java.util.Iterator; import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import java.util.List; import java.util.List;
import cc.niushuai.dididone.biz.BizGlobal;
import cc.niushuai.dididone.biz.entity.Project;
import cc.niushuai.dididone.biz.entity.Record; import cc.niushuai.dididone.biz.entity.Record;
import cc.niushuai.dididone.biz.roomx.DBManager;
import cc.niushuai.dididone.ui.base.BaseFragment; import cc.niushuai.dididone.ui.base.BaseFragment;
import cc.niushuai.dididone.util.XLog; import cc.niushuai.dididone.util.XLog;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import io.reactivex.Flowable;
import io.reactivex.Single;
import io.reactivex.android.schedulers.AndroidSchedulers;
public class BaseChartFragment extends BaseFragment { public class BaseChartFragment extends BaseFragment {
@ -36,4 +37,35 @@ public class BaseChartFragment extends BaseFragment {
return DateUtil.parseDate(date).getTime(); return DateUtil.parseDate(date).getTime();
} }
@Override
public void onStart() {
super.onStart();
XLog.d("{} onStart", getTitle());
}
@Override
public void onDestroy() {
super.onDestroy();
XLog.d("{} onDestroy", getTitle());
}
@Override
public void onDestroyView() {
super.onDestroyView();
XLog.d("{} onDestroyView", getTitle());
}
@Override
public void onViewStateRestored(@Nullable Bundle savedInstanceState) {
super.onViewStateRestored(savedInstanceState);
XLog.d("{} onViewStateRestored", getTitle());
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
setRetainInstance(true);
super.onCreate(savedInstanceState);
XLog.d("{} onCreate", getTitle());
}
} }

48
app/src/main/java/cc/niushuai/dididone/ui/statistic/charts/ListFragment.java

@ -1,5 +1,7 @@
package cc.niushuai.dididone.ui.statistic.charts; package cc.niushuai.dididone.ui.statistic.charts;
import static cc.niushuai.dididone.biz.BizGlobal.getTextViewDate;
import android.os.Bundle; import android.os.Bundle;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -25,8 +27,9 @@ import cc.niushuai.dididone.databinding.FragmentStatListBinding;
import cc.niushuai.dididone.util.XLog; import cc.niushuai.dididone.util.XLog;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import io.reactivex.Flowable; import io.reactivex.Flowable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers; import io.reactivex.schedulers.Schedulers;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
public class ListFragment extends BaseChartFragment { public class ListFragment extends BaseChartFragment {
@ -39,9 +42,10 @@ public class ListFragment extends BaseChartFragment {
@Nullable @Nullable
@Override @Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
XLog.d("{} onCreateView", getTitle());
View view = inflater.inflate(R.layout.fragment_stat_list, container, false); View view = inflater.inflate(R.layout.fragment_stat_list, container, false);
binding = FragmentStatListBinding.bind(view); binding = FragmentStatListBinding.bind(view);
return view; return binding.getRoot();
} }
@Override @Override
@ -84,6 +88,8 @@ public class ListFragment extends BaseChartFragment {
dateStr2mills(startDate.toString()), dateStr2mills(startDate.toString()),
dateStr2mills(endDate.toString())); dateStr2mills(endDate.toString()));
listFlowable.subscribeOn(Schedulers.io()).subscribe(recordList -> { listFlowable.subscribeOn(Schedulers.io()).subscribe(recordList -> {
XLog.d("recordList: {}", recordList.size()); XLog.d("recordList: {}", recordList.size());
recordList.forEach(item -> XLog.d("{} at {}", item.getName(), DateUtil.date(item.getCheckDate()).toDateStr())); recordList.forEach(item -> XLog.d("{} at {}", item.getName(), DateUtil.date(item.getCheckDate()).toDateStr()));
@ -93,14 +99,17 @@ public class ListFragment extends BaseChartFragment {
} }
private void onRecordDataList(List<Record> recordList) { private void onRecordDataList(List<Record> recordList) {
getActivity().runOnUiThread(() -> {
binding.statTotalMsg.setText("总计: " + recordList.size() + "条记录");
binding.statListCheckInList.removeAllViews();
});
// 更新视图 // 更新视图
for (int i = recordList.size() - 1; i >= 0; i--) { for (int i = recordList.size() - 1; i >= 0; i--) {
// 查出来的数据是倒叙的 // 查出来的数据是倒叙的
Record record = recordList.get(i); Record record = recordList.get(i);
getActivity().runOnUiThread(() -> { getActivity().runOnUiThread(() -> add2Top(BizGlobal.CACHE_PROJECT.get(record.getProjectId()), record));
binding.statListCheckInList.removeAllViews();
add2Top(BizGlobal.CACHE_PROJECT.get(record.getProjectId()), record);
});
} }
} }
@ -116,11 +125,38 @@ public class ListFragment extends BaseChartFragment {
public void setListeners() { public void setListeners() {
binding.statListStartDate.setOnClickListener(v -> { binding.statListStartDate.setOnClickListener(v -> {
Function1<Long, Unit> unitFunction = millisecond -> {
String dateStr = DateUtil.date(millisecond).toDateStr();
XLog.d("select date = {}", dateStr);
binding.statListStartDate.setText(dateStr);
onConditionChange(binding.statListSpinnerProject.getSelectedItemPosition(), binding.statListStartDate.getText(), binding.statListEndDate.getText());
return null;
};
BizGlobal.buildCardDatePickerDialog(getContext(), "选择起始日期", getTextViewDate(binding.statListStartDate), null, getTextViewDate(binding.statListEndDate),
false, "确定", unitFunction);
}); });
binding.statListEndDate.setOnClickListener(v -> { binding.statListEndDate.setOnClickListener(v -> {
Function1<Long, Unit> unitFunction = millisecond -> {
String dateStr = DateUtil.date(millisecond).toDateStr();
XLog.d("select date = {}", dateStr);
binding.statListEndDate.setText(dateStr);
onConditionChange(binding.statListSpinnerProject.getSelectedItemPosition(), binding.statListStartDate.getText(), binding.statListEndDate.getText());
return null;
};
BizGlobal.buildCardDatePickerDialog(getContext(), "选择结束日期", getTextViewDate(binding.statListEndDate), getTextViewDate(binding.statListStartDate), null,
false, "确定", unitFunction);
}); });
} }
} }

19
app/src/main/res/layout/fragment_stat_list.xml

@ -1,19 +1,17 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical" android:orientation="vertical">
>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="50dp" android:layout_height="50dp"
android:background="@color/gray_light_more" android:background="@color/gray_light_more">
>
<Spinner <Spinner
android:id="@+id/stat_list_spinner_project" android:id="@+id/stat_list_spinner_project"
android:layout_width="0dp"
style="@style/Widget.AppCompat.Button.Borderless.Colored" style="@style/Widget.AppCompat.Button.Borderless.Colored"
android:layout_width="0dp"
android:layout_height="match_parent" android:layout_height="match_parent"
android:layout_marginLeft="20dp" android:layout_marginLeft="20dp"
android:layout_weight="0.3" /> android:layout_weight="0.3" />
@ -46,6 +44,15 @@
</LinearLayout> </LinearLayout>
<TextView
android:id="@+id/stat_total_msg"
android:layout_width="match_parent"
android:layout_height="15dp"
android:layout_gravity="center"
android:background="@color/gray_light_more"
android:gravity="center_vertical|right"
android:text="总计: 0条记录" />
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
@ -55,7 +62,7 @@
android:id="@+id/stat_list_check_in_list" android:id="@+id/stat_list_check_in_list"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"/> android:orientation="vertical" />
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>

11
app/src/main/res/layout/fragment_statistic.xml

@ -4,10 +4,15 @@
android:layout_height="match_parent" android:layout_height="match_parent"
android:orientation="vertical"> android:orientation="vertical">
<!-- stat_tab_layout --> <com.google.android.material.tabs.TabLayout
<com.flyco.tablayout.SlidingTabLayout
android:id="@+id/stat_tab_layout" android:id="@+id/stat_tab_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content"
/>
<!-- stat_tab_layout -->
<!--<com.flyco.tablayout.SlidingTabLayout
android:id="@+id/stat_tab_layout2"
android:layout_width="match_parent"
android:layout_height="48dp" android:layout_height="48dp"
android:background="#EEEEEE" android:background="#EEEEEE"
tl:tl_divider_color="#1A000000" tl:tl_divider_color="#1A000000"
@ -21,7 +26,7 @@
tl:tl_textBold="SELECT" tl:tl_textBold="SELECT"
tl:tl_textSelectColor="@color/red" tl:tl_textSelectColor="@color/red"
tl:tl_textUnselectColor="@color/gray_light_less" tl:tl_textUnselectColor="@color/gray_light_less"
tl:tl_underline_height="2dp" /> tl:tl_underline_height="2dp" />-->
<androidx.viewpager.widget.ViewPager <androidx.viewpager.widget.ViewPager
android:id="@+id/stat_viewpager" android:id="@+id/stat_viewpager"

Loading…
Cancel
Save