5

ここに画像の説明を入力

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"));

ウィンドウで共有をスタイルしたい。テキストの色と蛍光ペンの線の色をデフォルトの青色からカ​​スタム色に変更したいと考えています。ホロライトテーマを使用しています。これらの要素のスタイルを設定する方法がわかりません。誰でもそれを行うための参照を指摘できますか?

スタイリングを通じて android.widget.ShareActionProvider の属性にアクセスする方法はありますか?

4

3 に答える 3

3

ダイアログのスタイルを設定する方法がわかりません。さまざまなデバイスでさまざまなレイアウトを見てきました。ただし、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();
于 2013-01-09T03:52:51.297 に答える
1

私の知る限り、選択ダイアログのスタイルを設定することはできません。これはシステム レベルのアクティビティであり、デフォルトのシステム テーマを使用します。

于 2013-01-09T03:49:21.310 に答える
0

こんな使い方もできます

        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);
        }
    });
于 2015-09-01T11:28:35.937 に答える