我有点坚持这一个 - 首先,下面的链接已经然而有用的,我想出了一个有点能见度的问题:
链接:检查视图可见性
我有一个滚动视图(父)和若干子视图(LinearLayout- > TableLayout)等有许多项的予设定为View.GONEXML中(android:visibility="gone").
我有一些简单的代码来确定它是否可见getVisibility()但是当我设置项目View.VISIBLE并尝试立即getDrawingRect()我得到一个带有零的Rect.任何进一步点击都会得到正确的坐标
现在,这可能是因为观点从来没有抽(如XML定义),使其返回没有坐标然而,我设置View.VISIBLE试图确定屏幕可视性之前.可能是因为我需要从onDraw()获得某种回调吗?或者可能在代码中设置隐藏项目的视图可见性.有点烦人;(
一些代码:
Rect scrollBounds = new Rect();
scroll.getHitRect(scrollBounds);
Rect viewBounds = new Rect();
if (view.getVisibility() == View.GONE) {
view.setVisibility(View.VISBLE)
viewBounds.getDrawingRect(viewBounds);
if (!Rect.intersects(scrollBounds, viewBounds) {
// do somthing
}
}
Run Code Online (Sandbox Code Playgroud)
布局区域如下:
ScrollView
LinearLayout
TableLayout
ButtonHiddenView当然,我很可能完全以错误的方式解决这个问题 - 基本上我只是想确保scrollview定位自己以便可以看到已经变得可见的视图.
如果需要任何其他信息,请告诉我!
我Recyclerview在我的测试应用程序中实现了一个.目前,我将大约5000项数据拉入模型,并使用此列表加载我的视图.一切都很棒,表现很好,但我并不特别想要加载所有5000件物品.我宁愿加载100个项目,一旦用户点击底部,加载下一个100,并基本上使它成为一个不断增长的列表.
我可以实现onScrollListener反对Recyclerview我到达结束时的检测,但我的问题(这听起来很简单)是,告诉Recyclerview加载只有100直到我说的最佳方法是什么?
我的适配器:
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
private List<ImageFeed> mFeedList;
public MyAdapter(List<ImageFeed> feedList) {
this.mFeedList = feedList;
}
public void setFeedList(List<ImageFeed> feedList) {
mFeedList = feedList;
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup vGroup, int i) {
View v = LayoutInflater.from(vGroup.getContext()).inflate(R.layout.recycler_list, vGroup, false);
return new MyAdapter.ViewHolder(v);
}
@Override
public void onBindViewHolder(final MyAdapter.ViewHolder viewHolder, int i) {
String mTitle = mFeedList.get(i).getTitle();
...//Do other stuff
}
@Override
public int getItemCount() {
return mFeedList.size();
} …Run Code Online (Sandbox Code Playgroud) 我现在正在摸着这个......我有一个ActionBarActivity加载一个初始Fragment- 原始菜单在活动中膨胀.现在,我有一个导航栏,当选择一个项目时,它会加载一个不同的片段并将其添加到backstack.
当我这样做时,我想设置几件事:
发生了一些比较奇怪的事情 - 向上指示器仅出现一次并且不像后退按钮那样,虽然我已经使新菜单无效并且充气,新菜单会附加到原始活动菜单.
编辑:好吧,我已经解决了追加的问题-忘了加menu.clear()的onCreateOptionsMenu方法.
我的导航抽屉布局包含onClick所有菜单项的方法,这些方法会触发另一个片段的加载:
public void navItemClick(View view) {
switch (view.getId()) {
case R.id.ripSMS:
mNavigationDrawer.toggleHome(false);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
FragmentTransaction mTrans = getSupportFragmentManager().beginTransaction();
mTrans.replace(R.id.voiceover_frame_layout,new MessageFragment(),"main_ui")
.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE).addToBackStack("msg").commit();
break;
case R.id.ripEmail:
break;
case R.id.ripSettings:
break;
}
mNavigationDrawer.closeDrawer();
}
Run Code Online (Sandbox Code Playgroud)
toggleHome:
public void toggleHome(boolean show) {
mDrawerToggle.setDrawerIndicatorEnabled(show);
if (!show) {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED);
} else {
mDrawerLayout.setDrawerLockMode(DrawerLayout.LOCK_MODE_UNLOCKED);
}
}
Run Code Online (Sandbox Code Playgroud)
触发项目后,onCreate包含invalidate和hasOptions代码:
@Override
public void onCreate(Bundle savedInstanceState) { …Run Code Online (Sandbox Code Playgroud) android fragment android-actionbaractivity android-toolbar fragment-backstack