我有一个带有recyclerview(GridlayoutManager)的片段.recyclerview中的项目并不复杂或有图像,但向下滚动Recyclerview滞后(在Nexus 5上测试).我将hasFixedSize和hasStableIds设置为true有谁知道为什么会这样?提前致谢.
分段
public class EditTimetableFragment extends Fragment implements TimetableRecyclerViewAdapter.ClickListener {
public EditTimetableFragment() {}
DAO dao;
SharedPreferences sharedPreferences;
SharedPreferences.Editor editor;
RecyclerView recyclerViewTimetable;
Spinner spinnerSubject;
TimetableRecyclerViewAdapter timetableRecyclerViewAdapter;
TaskSubjectSpinnerAdapter taskSubjectSpinnerAdapter;
List<Subject> subjectList;
List<Timetable> timetableList;
FloatingActionButton fabAddSubject;
boolean saturday, sunday;
int dayLength, hourLength;
TextView textViewSa, textViewSu;
LinearLayout week, linearLayout;
View view;
public View getView() {
return view;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this
dao = new DAO(getActivity());
getTimetableSettings();
subjectList = dao.getAllSubjectsAlphabetical();
timetableList …Run Code Online (Sandbox Code Playgroud) 我已经开发了一个应用程序,并且希望将我的第一页设置为“条款和条件”活动,其中该活动仅在安装后第一次显示。然后,如果用户接受,它将再也不会在该设备上显示。如果用户拒绝条款和条件活动,则它将在每次应用程序启动时显示。
我的问题是“如何实现代码?”
我有以下观点:
<View
android:id="@+id/divider"
android:layout_height="2dp"
android:background="#ffffff"
android:layout_below="@+id/timer"
android:layout_width="wrap_content" />
Run Code Online (Sandbox Code Playgroud)
我正在我的项目中实现一个计时器。因此,函数 onTick() 每秒被调用一次:
public void onTick(long millisUntilFinished) {
secsPassed++;
minsPassed = (secsPassed-1)/60;
View dividerWhite = findViewById(R.id.dividerWhite);
View divider = findViewById(R.id.divider);
Log.i("divider.getWdith() = ", divider.getWidth()-secsPassed + "");
Log.i("layout width ", divider.getLayoutParams().width + " ");
//further code to implement a timer
Run Code Online (Sandbox Code Playgroud)
问题是,当divider.getLayoutParams().width的值divider.getWidth()正确时(即剩余秒数),我得到 -1
我需要随着时间的推移动态改变视图的宽度。divider.setLayoutParams().width是一个很好的选择。但是,它并没有改变布局宽度,它仍然是-1