如何在Android中创建自定义的共享对话框

3

我正在使用应用程序的分享选项分享到社交媒体。Android默认的分享对话框可以正常工作。我想自定义对话框,以便我可以像Flipboard Android应用程序中那样重新排列共享对话框UI。有人能指出如何做到这一点吗?


3
这个例子可能对你有所帮助。它展示了如何拦截Android设备中的"action_send"意图,并在用户发送邮件之前添加一些文本。点击链接查看完整的教程:http://clickclickclack.wordpress.com/2012/01/03/intercepting-androids-action_send-intents/. - ρяσѕρєя K
那是一个很好的例子。我会试一下。 - intrepidkarthi
示例已经可用,但你需要对其进行一些更改。 - ρяσѕρєя K
你需要创建一个R.layout.basiclistview的xml文件用于列表视图行。 - ρяσѕρєя K
@intrepidkarthi 你完成自定义共享对话框了吗? - kartheeki j
1个回答

1

我遇到了这个问题。我在这个答案中找到了解决方案,希望它也能帮到你。

为了防止将来不存在,我在下面写出了这篇文章的代码:

您必须使用自定义的ListAdapter来添加您的图像。一种方法是子类化ArrayAdapter(默认情况下由AlertDialog使用)。以下是一个示例:

final Item[] items = {
    new Item("Email", android.R.drawable.ic_menu_add),
    new Item("Facebook", android.R.drawable.ic_menu_delete),
    new Item("...", 0),//no icon for this one
};

ListAdapter adapter = new ArrayAdapter<Item>(
    this,
    android.R.layout.select_dialog_item,
    android.R.id.text1,
    items){
        public View getView(int position, View convertView, ViewGroup parent) {
            //Use super class to create the View
            View v = super.getView(position, convertView, parent);
            TextView tv = (TextView)v.findViewById(android.R.id.text1);

            //Put the image on the TextView
            tv.setCompoundDrawablesWithIntrinsicBounds(items[position].icon, 0, 0, 0);

            //Add margin between image and text (support various screen densities)
            int dp5 = (int) (5 * getResources().getDisplayMetrics().density + 0.5f);
            tv.setCompoundDrawablePadding(dp5);

            return v;
        }
    };


new AlertDialog.Builder(this)
    .setTitle("Share Appliction")
    .setAdapter(adapter, new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int item) {
            //...
        }
    }).show();

这是Item类。
public static class Item{
    public final String text;
    public final int icon;
    public Item(String text, Integer icon) {
        this.text = text;
        this.icon = icon;
    }
    @Override
    public String toString() {
        return text;
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接