【问题标题】:How to customize the ShareActionProvider in Android如何在 Android 中自定义 ShareActionProvider
【发布时间】:2019-05-11 15:06:17
【问题描述】:

如何自定义此图像中的菜单。谁能告诉解决方法

我想显示四个子菜单(FB、Google+、Twitter 和 SeeAll)如果我触摸 SeeAll,一个对话框必须弹出,其中包含更多(FB、Google+、Twitter、Linkedin、NetLog 等..,)

代码:

Menu.xml:-

   <menu xmlns:android="http://schemas.android.com/apk/res/android" >

       <item android:id="@+id/menu_item_share"
            android:showAsAction="ifRoom"
            android:title="Share"
            android:actionProviderClass="android.widget.ShareActionProvider" />

    </menu>

活动:-

  public boolean onCreateOptionsMenu(Menu menu) {
         getMenuInflater().inflate(R.menu.action_bar_share_menu, menu);
         MenuItem item = menu.findItem(R.id.menu_item_share);

         ShareActionProvider myShareActionProvider = (ShareActionProvider) item.getActionProvider();

         Intent myIntent = new Intent();
         myIntent.setAction(Intent.ACTION_SEND);
         myIntent.putExtra(Intent.EXTRA_TEXT, "Whatever message you want to share");
         myIntent.setType("text/plain");


         myShareActionProvider.setShareIntent(myIntent);

         return true;

【问题讨论】:

    标签: android android-layout android-intent android-menu


    【解决方案1】:

    试试这个:-

          <?xml version="1.0" encoding="utf-8"?>
    <menu xmlns:android="http://schemas.android.com/apk/res/android" >
    
        <item
            android:id="@+id/action_location_found"
            android:clickable="true"
            android:icon="@drawable/ic_launcher"
            android:showAsAction="always"
            android:title="Share">
            <menu>
                <item
                    android:id="@+id/facebook"
                    android:orderInCategory="1"
                    android:showAsAction="never"
                    android:title="Facebook">
                </item>
                <item
                    android:id="@+id/twitter"
                    android:orderInCategory="2"
                    android:showAsAction="never"
                    android:title="Twitter">
                </item>
                <item
                    android:id="@+id/gplus"
                    android:orderInCategory="3"
                    android:showAsAction="never"
                    android:title="Google Plus">
                </item>
                <item
                    android:id="@+id/seeall"
                    android:orderInCategory="4"
                    android:showAsAction="never"
                    android:title="See All">
                </item>
            </menu>
        </item>
    
    </menu>
    

    活动(Java 代码):-

         public class MainActivity extends Activity {
    
    
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
    
        }
    
                @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            MenuInflater inflater = getMenuInflater();
            inflater.inflate(R.menu.main, menu);
            return super.onCreateOptionsMenu(menu);
        }
    
        @Override
        public boolean onOptionsItemSelected(MenuItem item) {
            switch (item.getItemId()) {
    
            case R.id.facebook:
    
                Toast.makeText(getApplicationContext(), "Testing", 1000).show();
    
                // write the code here, what you want the action when user click
                // facebook submenu....
    
                break;
            case R.id.twitter:
    
                break;
    
            case R.id.gplus:
    
                break;
    
            case R.id.seeall:
    
                break;
    
            default:
                return true;
            }
            return super.onOptionsItemSelected(item);
        }
    }
    

    Kotlin 代码:-

    class MainActivity:Activity() {
      protected fun onCreate(savedInstanceState:Bundle) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
      }
      fun onCreateOptionsMenu(menu:Menu):Boolean {
        val inflater = getMenuInflater()
        inflater.inflate(R.menu.main, menu)
        return super.onCreateOptionsMenu(menu)
      }
      fun onOptionsItemSelected(item:MenuItem):Boolean {
        when (item.getItemId()) {
          R.id.facebook ->
          Toast.makeText(getApplicationContext(), "Testing", 1000).show()
          R.id.twitter ->
          { //code
          }
          R.id.gplus ->
          { //code
          }
          R.id.seeall ->
          { //code
          }
          else -> return true
        }// write the code here, what you want the action when user click
        // facebook submenu....
        return super.onOptionsItemSelected(item)
      }
    }
    

    【讨论】:

    • ViewUserProfileActivity 类的内容应该是什么?
    • 嗨.. 我在 switch 内遇到以下错误 ** case action_twt 无法解析或不是字段 **
    • 你能帮我写下case语句下的代码吗只要你参考这张图片thorbek.net/online/wp-content/uploads/2013/07/…
    • @PothiraJ:我已经更新了我的答案..它在我这边运行良好..希望你的问题能得到解决。 :) 休息问我你是否被困在任何地方..
    • 亲爱的 facebook 你已经写了一些代码......谷歌它。你需要一些 sdk...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-17
    • 2022-01-23
    • 2016-04-02
    • 1970-01-01
    相关资源
    最近更新 更多