【问题标题】:Styling the Share Action Provider in Android在 Android 中设置 Share Action Provider 的样式
【发布时间】:2013-01-09 03:24:45
【问题描述】:

这是我通过 Share Action Provider 分享内容的方式:

Intent sendIntent = new Intent();
sendIntent.setAction(Intent.ACTION_SEND);
sendIntent.putExtra(Intent.EXTRA_TEXT,
                    "Check the Link  : " + url);
sendIntent.setType("text/plain");
startActivity(Intent.createChooser(sendIntent, "Share with"));

我想用窗口设置共享的样式。我想将文本颜色和荧光笔线条颜色从默认蓝色更改为我的自定义颜色。我正在使用 Holo 灯光主题。我不知道如何设置这些元素的样式。任何人都可以指出这样做的参考吗?

有没有办法通过样式访问 android.widget.ShareActionProvider 的属性?

【问题讨论】:

  • 你能说清楚你到底想要什么吗?如果你能展示你以前的代码和努力会更好。
  • @Appu 更新了问题

标签: android android-intent android-theme shareactionprovider


【解决方案1】:

我不知道如何设置对话框的样式,我在不同的设备上看到了不同的布局。但是您可以使用PackageManager.queryIntentActivities(Intent intent, int flag) 来获取可以处理此意图的所有活动。并使用列表数据创建您自己的选择器。

编辑:演示

    final Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse("http://www.google.com"));
    PackageManager pm = getPackageManager();
    final List<ResolveInfo> infos = pm.queryIntentActivities(intent,
            PackageManager.MATCH_DEFAULT_ONLY);
    CharSequence[] names = new CharSequence[infos.size()];
    for (int i = 0; i < infos.size(); i++) {
        names[i] = infos.get(i).loadLabel(pm);
    }
    new AlertDialog.Builder(this).setItems(names,
            new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    ResolveInfo info = infos.get(which);
                    intent.setClassName(info.activityInfo.packageName,
                            info.activityInfo.name);
                    startActivity(intent);
                }
            }).show();

【讨论】:

  • 我找不到参考,所以我为你写了一个演示。
  • 谢谢@faylon。我会试试这个
  • 谢谢@faylon。好作品。我进行了一些设计更改以使其可用于我的应用程序主题。
【解决方案2】:

据我所知,您无法设置选择器对话框的样式。这是一个系统级的活动,并使用默认的系统主题。

【讨论】:

  • 好的。在哪里可以找到 android.widget.ShareActionProvider 的样式元素?有可能吗?
【解决方案3】:

你也可以这样使用

        final Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("text/plain");
        intent.putExtra(android.content.Intent.EXTRA_SUBJECT,getString(R.string.app_name));
        intent.putExtra(android.content.Intent.EXTRA_TEXT,getString(R.string.tell_your_frnd));
        PackageManager pm = getPackageManager();
        final List<ResolveInfo> infos = pm.queryIntentActivities(intent,
                PackageManager.MATCH_DEFAULT_ONLY);
        name = new String[infos.size()];
        image=new Drawable[infos.size()];
        for (int i = 0; i < infos.size(); i++) 
        {
            name[i] = (String) infos.get(i).loadLabel(pm);
            image[i]=infos.get(i).loadIcon(pm);
        }


        CustomGrid adapter = new CustomGrid(ShareActivity.this,name,image);
        mGridView.setAdapter(adapter);

        mGridView.setOnItemClickListener(new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view,int position, long id) 
        {

            ResolveInfo info = infos.get(position);

            intent.setClassName(info.activityInfo.packageName,
                    info.activityInfo.name);
            startActivity(intent);
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-07-07
    • 2012-01-05
    • 2010-11-11
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多