私は 2 日間、slidingmenu でセレクターを使用しようとしましたが、うまく動作しませんでした。
これが私がやりたいことです:
ListView を含むメニューがあります。セレクターが特定のアイテムをポイントし、リストビューがスクロールされたときにアイテムと一緒に移動するようにします。
したがって、基本的にセレクターは正しい項目を指していますが、スクロールすると、セレクターは携帯電話 (android 4.0.4) では移動しませんが、エミュレーター (4.1.2) では動作します。私が彼にそうするように頼んだとき、メニューがそれ自体を無効にしない理由について何か考えがありますか?
/*Setting the sliding menu */
setBehindContentView(R.layout.menu);
setSlidingActionBarEnabled(true);
getSlidingMenu().setMode(SlidingMenu.LEFT);
getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
getSlidingMenu().setFadeEnabled(true);
getSlidingMenu().setFadeDegree(0.35f);
getSlidingMenu().setShadowWidth(15);
getSlidingMenu().setShadowDrawable(R.drawable.shadow);
getSlidingMenu().setSelectorEnabled(true);
getSlidingMenu().setSelectorDrawable(R.drawable.selector);
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
getSlidingMenu().setBehindWidth((int) (metrics.widthPixels * 0.8));
getSlidingMenu().setSelectedView(null);
/*Creating the content of the sliding menu*/
/*Now we generate the menu below */
maListViewPerso = (ListView) this.findViewById(R.id.listviewperso);
maListViewPerso = SlidingMenuListCreator.getListView(this, (String) this.getTitle(), maListViewPerso, isMissionSelected, isTourneeOpened);
getSlidingMenu().setOnOpenListener(new OnOpenListener() {
@Override
public void onOpen() {
int wantedPosition = 5; // Whatever position you're looking for
int firstPosition = maListViewPerso.getFirstVisiblePosition() - maListViewPerso.getHeaderViewsCount(); int wantedChild = wantedPosition - firstPosition;
if (wantedChild < 0 || wantedChild >= maListViewPerso.getChildCount()) {
} else {
selectedView = maListViewPerso.getChildAt(wantedChild);
}
getSlidingMenu().setSelectedView(selectedView);
getSlidingMenu().invalidate();
}
});
OnTouchListener mOnTouchListener = new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
maListViewPerso.onTouchEvent(event);
int wantedPosition = 5; int firstPosition = maListViewPerso.getFirstVisiblePosition() - maListViewPerso.getHeaderViewsCount(); int wantedChild = wantedPosition - firstPosition;
if (wantedChild < 0 || wantedChild >= maListViewPerso.getChildCount()) {
} else {
selectedView = maListViewPerso.getChildAt(wantedChild); }
getSlidingMenu().setSelectedView(selectedView);
getSlidingMenu().getmViewBehind().invalidate();
return true;
}
};
maListViewPerso.setOnTouchListener(mOnTouchListener);