کلیک نشدن آیتم های اسلایدینگ منو(لطفا کمک کنید.هنوز حل نشده)
سلام دوستان.به کمک فیلم آموزشی اسلایدینگ منو آقای کاشی زاده تونستم اسلایدینگ منو رو پیاده سازی کنم.اما تنها مشکلی که وجود داره وقتی بر روی یکی از آیتم های اسلایدینگ منو کلیک شدن رو تعریف میکنم چیزی هایی که در onclick نوشتم اجرا نمیشن و فقط اسلایدینگ منو بسته میشه!
خیلی راحت مثل هر دکمه دیگه ای من تو برنامه ام ایجادش کردم
همون اسلاید منوی کاشی زاده هست براش فونت هم ست کردم
//Start Sliding Menu****************************************************************
//
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View actionBarView = inflater.inflate(R.layout.action_bar, null);
ActionBar actionBar = getSupportActionBar();
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
actionBar.setCustomView(actionBarView, new ActionBar.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
final DrawerLayout drawerlayout = (DrawerLayout) findViewById(R.id.drawerlayout);
//******** kilidi ke ban on slide menu ro baz va baste mikonam
Button btnMenu = (Button) actionBarView.findViewById(R.id.btnMenu);
btnMenu.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
if (drawerlayout.isDrawerOpen(Gravity.LEFT)) {
drawerlayout.closeDrawer(Gravity.LEFT);
} else {
drawerlayout.openDrawer(Gravity.LEFT);
}
}
});
//******** baraye mohtaviate slide menu font set kardam
tf = Typeface.createFromAsset(getAssets(), "yekan.ttf");
TextView txt1 = (TextView) findViewById(R.id.txtmenu1);
TextView txt2 = (TextView) findViewById(R.id.txtmenu2);
TextView txt3 = (TextView) findViewById(R.id.txtmenu3);
TextView txt4 = (TextView) findViewById(R.id.txtmenu4);
TextView txt_actionbar = (TextView) findViewById(R.id.txt_actionbar);
txt1.setTypeface(tf);
txt2.setTypeface(tf);
txt3.setTypeface(tf);
txt4.setTypeface(tf);
txt_actionbar.setTypeface(tf, Typeface.BOLD);
//********kilid haii ke dakhele slid menu estefade karadm
findViewById(R.id.lay1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
drawerlayout.closeDrawer(Gravity.LEFT);
Intent go_next = new Intent(G.context, LearnMenuActivity.class);
StartUpActivity.this.startActivity(go_next);
}
});
findViewById(R.id.lay2).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
drawerlayout.closeDrawer(Gravity.LEFT);
Intent go_next = new Intent(G.context, SamplesMenuActivity.class);
StartUpActivity.this.startActivity(go_next);
}
});
findViewById(R.id.lay3).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
drawerlayout.closeDrawer(Gravity.LEFT);
Intent go_next = new Intent(G.context, NotesActivity.class);
StartUpActivity.this.startActivity(go_next);
}
});
findViewById(R.id.lay4).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
drawerlayout.closeDrawer(Gravity.LEFT);
Intent go_next = new Intent(G.context, AboutActivity.class);
StartUpActivity.this.startActivity(go_next);
}
});
findViewById(R.id.lay5).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
drawerlayout.closeDrawer(Gravity.LEFT);
Intent go_next = new Intent(G.context, FavoriteActivity.class);
StartUpActivity.this.startActivity(go_next);
}
});
//
//End Sliding Menu****************************************************************
نمیدونم چرا اینطوری شده.هر کاری می کنم اصلا آیتم های اسلایدینگ منو کلیک نمی شوند.کاملا گیج شدم! اصلا انگار هیچ onclick ای برای آیتم های اسلایدینگ منو ننوشتم!!!
// کدهای اکشن بار
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); View view = inflater.inflate(R.layout.actionbar, null); ActionBar actionBar = getSupportActionBar(); actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); actionBar.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM); actionBar.setCustomView(view, new ActionBar.LayoutParams (ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)); getSupportActionBar().setDisplayShowTitleEnabled(false); getSupportActionBar().setDisplayShowHomeEnabled(false); ///////////////////////////////////////////////// کدهای اسلایدینگ منو final DrawerLayout drawer_layout = (DrawerLayout) findViewById(R.id.drawer_layout); ImageView imgmenu = (ImageView) view.findViewById(R.id.imgmenu); imgmenu.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { if (drawer_layout.isDrawerOpen(Gravity.RIGHT)) drawer_layout.closeDrawer(Gravity.RIGHT); else drawer_layout.openDrawer(Gravity.RIGHT); } }); ////////////////////////////////////////////////////////////////// کلیک شدن بر روی اولین آیتم اسلابدینگ منو LinearLayout lay1 = (LinearLayout) view.findViewById(R.id.lay1); lay1.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { Intent intent = new Intent(Activity1.this, Activity2.class);
Activity1.this.startActivity(intent); } });
فایل XML شما همون root تعین میکنه که کلیک ها روی کدوم لایه انجام بشه
<?xml version="1.0" encoding="utf-8"?>
<android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawer_layout"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<include layout="@layout/main" />
<include layout="@layout/sliding_menu" />
</android.support.v4.widget.DrawerLayout>
لایه ایی که پایین تر باشه کلیک ها میگیره اگر به اشتباه Main رو پایین تر قرار داده باشید روی NavigationDrawer شما کلیک نمیشه
نکته دوم اینکه بعد از این هم NavigationDrawer کلیک هایی که روش میشه رو با اینکه قبول میکنه اما اگر روی قسمتی کلیک بشه که هیچ View نباشه و OnclickListener اونجا نباشه اون کلیک از NavigationDrawerرد میشه و به لایه زیری کلیک میشه
برای حل نکته دوم میتونید کل لایه NavigationDrawer رو بگیرید وOnclickListener خالی براش تعریف کنید
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .