Android стварыць карыстацкі пункт меню перапаўнення

Я хачу, каб стварыць пункт меню карыстацкага перапаўнення ў маім ActionBar у дадатак у пункце налады, як апісана ў малюнку ніжэй:

Action bar

Але калі ёсць мала месца ў ActionBar я не хачу, каб Элемент1 і Элемент2 ісці ў пункт Налады, як перапаўненне, але ў «маім пералівы пункт».

гэта маё меню XML-код:



11

18 адказы

Гэта дапаможа вам. Я закадаваны гэта для пераліву меню

У меню Файл/main.xml


    
 

А вось ваш код Java:

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.main, menu);

    return true;

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

   //Handle action bar actions click

    super.onOptionsItemSelected(item);
    if(item.getItemId() == R.id.facebook){
        Toast.makeText(Getstarted.this, "Option pressed= facebook",Toast.LENGTH_LONG).show();
    }
    else if(item.getItemId() == R.id.Youtube){
        Toast.makeText(Getstarted.this, "Option pressed= youtube",Toast.LENGTH_LONG).show();
    }
    else if(item.getItemId() == R.id.Twitter){
        Toast.makeText(Getstarted.this, "Option pressed= twitter",Toast.LENGTH_LONG).show();
    }
    return true;    

}
6
дададзена
Дзякуй, але АНДРОІД: showAsAction = "заўсёды" -> прыкладанне: showAsAction = "заўсёды"
дададзена аўтар Arnab, крыніца

Гэта дапаможа вам. Я закадаваны гэта для пераліву меню

У меню Файл/main.xml


    
 

А вось ваш код Java:

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.main, menu);

    return true;

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

   //Handle action bar actions click

    super.onOptionsItemSelected(item);
    if(item.getItemId() == R.id.facebook){
        Toast.makeText(Getstarted.this, "Option pressed= facebook",Toast.LENGTH_LONG).show();
    }
    else if(item.getItemId() == R.id.Youtube){
        Toast.makeText(Getstarted.this, "Option pressed= youtube",Toast.LENGTH_LONG).show();
    }
    else if(item.getItemId() == R.id.Twitter){
        Toast.makeText(Getstarted.this, "Option pressed= twitter",Toast.LENGTH_LONG).show();
    }
    return true;    

}
6
дададзена
Дзякуй, але АНДРОІД: showAsAction = "заўсёды" -> прыкладанне: showAsAction = "заўсёды"
дададзена аўтар Arnab, крыніца

Гэта дапаможа вам. Я закадаваны гэта для пераліву меню

У меню Файл/main.xml


    
 

А вось ваш код Java:

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    getMenuInflater().inflate(R.menu.main, menu);

    return true;

}

@Override
public boolean onOptionsItemSelected(MenuItem item) {

   //Handle action bar actions click

    super.onOptionsItemSelected(item);
    if(item.getItemId() == R.id.facebook){
        Toast.makeText(Getstarted.this, "Option pressed= facebook",Toast.LENGTH_LONG).show();
    }
    else if(item.getItemId() == R.id.Youtube){
        Toast.makeText(Getstarted.this, "Option pressed= youtube",Toast.LENGTH_LONG).show();
    }
    else if(item.getItemId() == R.id.Twitter){
        Toast.makeText(Getstarted.this, "Option pressed= twitter",Toast.LENGTH_LONG).show();
    }
    return true;    

}
6
дададзена
Дзякуй, але АНДРОІД: showAsAction = "заўсёды" -> прыкладанне: showAsAction = "заўсёды"
дададзена аўтар Arnab, крыніца

Глядзіце гэтыя спасылкі

http://www.codeproject.com/Articles/173121/Android- меню-My-Way

http://developer.android.com/guide/topics/ui/ actionbar.html # выпадальнага

і я прапаную вам выкарыстоўваць ActionBarSherlock для стварэння меню карыстацкага перапаўнення

Глядзіце гэты адказ, каб даведацца, як стварыць пункт меню перапаўнення з дапамогай ActionBar Шэрлака

ActionBarSherlock не ўключае ў сябе раздзел «пераліўкі» дзеянняў Bar (на Android 2.1)

0
дададзена
Я не хачу выкарыстоўваць знешнюю бібліятэку або выпадальнае меню, таму што гэта тып навігацыі, а не меню перапаўнення, і я распрацаваў для андроіда 4+
дададзена аўтар lory105, крыніца

Вы, хутчэй за ўсё, прыйдзецца выдаліць элемент налады ў меню г.зн. @ + ід/action_settings.

Калі вы ўсё яшчэ хочаце, каб быць там, проста выдаліце ​​гэта «showAsActionAttribute» або абмяняць яго на

android:showAsAction="always"

For Item1 and Item2: Add their showAsAction attributes as android:showAsAction="ifRoom|withText"

Надзея, што дапамагае.

0
дададзена

Лепшы спосаб зрабіць тое, што вы хочаце дасягнуць, каб надзьмуць звычай ActionBar .

Выканайце наступныя дзеянні.

1) Стварэнне xml RelativeLayout

2) Уключыць пункт меню і тэг ўнутры XML

3) надзьміце панэль дзеянняў праз ActionBar класа.

4) Вось гэта вы зрабілі !!

<�Моцны> Папярэджаньне: Не забудзьцеся выкарыстоўваць бібліятэку сумяшчальнасці !! Ёсць некаторая залежнасць у ім вышэй, каб працаваць.

0
дададзена

Лепшы спосаб зрабіць тое, што вы хочаце дасягнуць, каб надзьмуць звычай ActionBar .

Выканайце наступныя дзеянні.

1) Стварэнне xml RelativeLayout

2) Уключыць пункт меню і тэг ўнутры XML

3) надзьміце панэль дзеянняў праз ActionBar класа.

4) Вось гэта вы зрабілі !!

<�Моцны> Папярэджаньне: Не забудзьцеся выкарыстоўваць бібліятэку сумяшчальнасці !! Ёсць некаторая залежнасць у ім вышэй, каб працаваць.

0
дададзена

menu.xml:



abc.class file makes these changes:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.game_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
   //Handle item selection
    switch (item.getItemId()) {
        case R.id.game:
            Game();
            return true;
        case R.id.help:
            Help();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

См Menus дакументацыі.

0
дададзена

menu.xml:



abc.class file makes these changes:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.game_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
   //Handle item selection
    switch (item.getItemId()) {
        case R.id.game:
            Game();
            return true;
        case R.id.help:
            Help();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

См Menus дакументацыі.

0
дададзена

menu.xml:



abc.class file makes these changes:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.game_menu, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
   //Handle item selection
    switch (item.getItemId()) {
        case R.id.game:
            Game();
            return true;
        case R.id.help:
            Help();
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

См Menus дакументацыі.

0
дададзена

Стварэнне стылю для меню перапаўнення і перадаць у апісанні кантэнту




Выклік <�моцны> ViewGroup.findViewsWithText і перадаць у апісанні кантэнту. Нешта накшталт гэтага:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

   //The content description used to locate the overflow button
    final String overflowDesc = getString(R.string.accessibility_overflow);
   //The top-level window
    final ViewGroup decor = (ViewGroup) getWindow().getDecorView();
   //Wait a moment to ensure the overflow button can be located
    decor.postDelayed(new Runnable() {

        @Override
        public void run() {
           //The List that contains the matching views
            final ArrayList outViews = new ArrayList<>();
           //Traverse the view-hierarchy and locate the overflow button
            decor.findViewsWithText(outViews, overflowDesc,
                    View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION);
           //Guard against any errors
            if (outViews.isEmpty()) {
                return;
            }
           //Do something with the view
            final ImageButton overflow = (ImageButton) outViews.get(0);
            overflow.setImageResource(R.drawable.ic_action_overflow);

        }

    }, 1000);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
   //Add a dummy item to the overflow menu
    menu.add("Overflow");
    return super.onCreateOptionsMenu(menu);
}

View.findViewsWithText was added in API level 14 only. So please try to do a method by you own as like this:

public static void findViewsWithText(List outViews, ViewGroup parent, String targetDescription) {
    if (parent == null || TextUtils.isEmpty(targetDescription)) {
        return;
    }
    final int count = parent.getChildCount();
    for (int i = 0; i < count; i++) {
        final View child = parent.getChildAt(i);
        final CharSequence desc = child.getContentDescription();
        if (!TextUtils.isEmpty(desc) && targetDescription.equals(desc.toString())) {
            outViews.add(child);
        } else if (child instanceof ViewGroup && child.getVisibility() == View.VISIBLE) {
            findViewsWithText(outViews, (ViewGroup) child, targetDescription);
        }
    }
}

Гэта не правераны код. Так што калі ёсць якія-небудзь пытанні, у той час як вы рэалізуеце, калі ласка, дайце мне ведаць.

0
дададзена

Стварэнне стылю для меню перапаўнення і перадаць у апісанні кантэнту




Выклік <�моцны> ViewGroup.findViewsWithText і перадаць у апісанні кантэнту. Нешта накшталт гэтага:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

   //The content description used to locate the overflow button
    final String overflowDesc = getString(R.string.accessibility_overflow);
   //The top-level window
    final ViewGroup decor = (ViewGroup) getWindow().getDecorView();
   //Wait a moment to ensure the overflow button can be located
    decor.postDelayed(new Runnable() {

        @Override
        public void run() {
           //The List that contains the matching views
            final ArrayList outViews = new ArrayList<>();
           //Traverse the view-hierarchy and locate the overflow button
            decor.findViewsWithText(outViews, overflowDesc,
                    View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION);
           //Guard against any errors
            if (outViews.isEmpty()) {
                return;
            }
           //Do something with the view
            final ImageButton overflow = (ImageButton) outViews.get(0);
            overflow.setImageResource(R.drawable.ic_action_overflow);

        }

    }, 1000);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
   //Add a dummy item to the overflow menu
    menu.add("Overflow");
    return super.onCreateOptionsMenu(menu);
}

View.findViewsWithText was added in API level 14 only. So please try to do a method by you own as like this:

public static void findViewsWithText(List outViews, ViewGroup parent, String targetDescription) {
    if (parent == null || TextUtils.isEmpty(targetDescription)) {
        return;
    }
    final int count = parent.getChildCount();
    for (int i = 0; i < count; i++) {
        final View child = parent.getChildAt(i);
        final CharSequence desc = child.getContentDescription();
        if (!TextUtils.isEmpty(desc) && targetDescription.equals(desc.toString())) {
            outViews.add(child);
        } else if (child instanceof ViewGroup && child.getVisibility() == View.VISIBLE) {
            findViewsWithText(outViews, (ViewGroup) child, targetDescription);
        }
    }
}

Гэта не правераны код. Так што калі ёсць якія-небудзь пытанні, у той час як вы рэалізуеце, калі ласка, дайце мне ведаць.

0
дададзена

Стварэнне стылю для меню перапаўнення і перадаць у апісанні кантэнту




Выклік <�моцны> ViewGroup.findViewsWithText і перадаць у апісанні кантэнту. Нешта накшталт гэтага:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

   //The content description used to locate the overflow button
    final String overflowDesc = getString(R.string.accessibility_overflow);
   //The top-level window
    final ViewGroup decor = (ViewGroup) getWindow().getDecorView();
   //Wait a moment to ensure the overflow button can be located
    decor.postDelayed(new Runnable() {

        @Override
        public void run() {
           //The List that contains the matching views
            final ArrayList outViews = new ArrayList<>();
           //Traverse the view-hierarchy and locate the overflow button
            decor.findViewsWithText(outViews, overflowDesc,
                    View.FIND_VIEWS_WITH_CONTENT_DESCRIPTION);
           //Guard against any errors
            if (outViews.isEmpty()) {
                return;
            }
           //Do something with the view
            final ImageButton overflow = (ImageButton) outViews.get(0);
            overflow.setImageResource(R.drawable.ic_action_overflow);

        }

    }, 1000);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
   //Add a dummy item to the overflow menu
    menu.add("Overflow");
    return super.onCreateOptionsMenu(menu);
}

View.findViewsWithText was added in API level 14 only. So please try to do a method by you own as like this:

public static void findViewsWithText(List outViews, ViewGroup parent, String targetDescription) {
    if (parent == null || TextUtils.isEmpty(targetDescription)) {
        return;
    }
    final int count = parent.getChildCount();
    for (int i = 0; i < count; i++) {
        final View child = parent.getChildAt(i);
        final CharSequence desc = child.getContentDescription();
        if (!TextUtils.isEmpty(desc) && targetDescription.equals(desc.toString())) {
            outViews.add(child);
        } else if (child instanceof ViewGroup && child.getVisibility() == View.VISIBLE) {
            findViewsWithText(outViews, (ViewGroup) child, targetDescription);
        }
    }
}

Гэта не правераны код. Так што калі ёсць якія-небудзь пытанні, у той час як вы рэалізуеце, калі ласка, дайце мне ведаць.

0
дададзена

калі націсніце элемент з ActionBar

PopupMenu popup = new PopupMenu(MainActivity.this, v);
popup.getMenuInflater().inflate(
                            R.mymenu xml , popup.getMenu());



mymenu.xml


0
дададзена
Не маглі б вы растлумачыць, чаму і як гэта адказвае на пытанне? Што ваш код робіць?
дададзена аўтар Ben, крыніца

калі націсніце элемент з ActionBar

PopupMenu popup = new PopupMenu(MainActivity.this, v);
popup.getMenuInflater().inflate(
                            R.mymenu xml , popup.getMenu());



mymenu.xml


0
дададзена
Не маглі б вы растлумачыць, чаму і як гэта адказвае на пытанне? Што ваш код робіць?
дададзена аўтар Ben, крыніца

паспрабуйце выкарыстоўваць

:showAsAction="ifRoom|withText" />

не забудзьцеся дадаць

="http://schemas.android.com/apk/res-auto"

І паспрабуйце мець асобнае меню для фрагмента і глабальных (Налад ў файле меню Global.xml)

Пераканайцеся, што вы надзьмуць і ў правільным парадку.

0
дададзена

паспрабуйце выкарыстоўваць

:showAsAction="ifRoom|withText" />

не забудзьцеся дадаць

="http://schemas.android.com/apk/res-auto"

І паспрабуйце мець асобнае меню для фрагмента і глабальных (Налад ў файле меню Global.xml)

Пераканайцеся, што вы надзьмуць і ў правільным парадку.

0
дададзена

паспрабуйце выкарыстоўваць

:showAsAction="ifRoom|withText" />

не забудзьцеся дадаць

="http://schemas.android.com/apk/res-auto"

І паспрабуйце мець асобнае меню для фрагмента і глабальных (Налад ў файле меню Global.xml)

Пераканайцеся, што вы надзьмуць і ў правільным парадку.

0
дададзена