Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 共享意图:自定义布局_Android - Fatal编程技术网

Android 共享意图:自定义布局

Android 共享意图:自定义布局,android,Android,我们有没有办法定制共享意图的布局?默认值是ListView,如果客户端希望所有内容都相同,但显示一个网格视图,该怎么办!我知道如何使用packageManager筛选所需的应用程序。但我想将ListView更改为gridView,其他内容都一样 我认为你不可能一蹴而就地做到这一点。因此,您需要使用grid创建自己的共享对话框。 这里有一些例子我不认为你可以开箱即用。因此,您需要使用grid创建自己的共享对话框。 下面是一些示例根据您的要求调用下面的对话框: private void showAl

我们有没有办法定制共享意图的布局?默认值是ListView,如果客户端希望所有内容都相同,但显示一个网格视图,该怎么办!我知道如何使用packageManager筛选所需的应用程序。但我想将ListView更改为gridView,其他内容都一样

我认为你不可能一蹴而就地做到这一点。因此,您需要使用grid创建自己的共享对话框。
这里有一些例子

我不认为你可以开箱即用。因此,您需要使用grid创建自己的共享对话框。
下面是一些示例

根据您的要求调用下面的对话框:

private void showAlertDialog() {
        PackageManager pm = getPackageManager();
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        GridView gridView = new GridView(this);

        email.putExtra(Intent.EXTRA_EMAIL,
                new String[] { "velmurugan@androidtoppers.com" });
        email.putExtra(Intent.EXTRA_SUBJECT, "Hi");
        email.putExtra(Intent.EXTRA_TEXT, "Hi,This is Test");
        email.setType("text/plain");
        List<ResolveInfo> launchables = pm.queryIntentActivities(email, 0);

        Collections
                .sort(launchables, new ResolveInfo.DisplayNameComparator(pm));

        adapter = new AppAdapter(pm, launchables);
        gridView.setNumColumns(3);
        gridView.setAdapter(adapter);
        gridView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1,
                    int position, long arg3) {
                // TODO Auto-generated method stub
                ResolveInfo launchable = adapter.getItem(position);
                ActivityInfo activity = launchable.activityInfo;
                ComponentName name = new ComponentName(
                        activity.applicationInfo.packageName, activity.name);
                email.addCategory(Intent.CATEGORY_LAUNCHER);
                email.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
                email.setComponent(name);
                startActivity(email);
            }
        });


        builder.setView(gridView);
        builder.setTitle("Share");
        builder.show();
    }
private void showAlertDialog(){
PackageManager pm=getPackageManager();
AlertDialog.Builder=新建AlertDialog.Builder(此);
GridView GridView=新的GridView(此);
email.putExtra(Intent.EXTRA_email,
新字符串[]{”velmurugan@androidtoppers.com" });
email.putExtra(Intent.EXTRA_主题“Hi”);
email.putExtra(Intent.EXTRA_文本,“嗨,这是测试”);
email.setType(“文本/普通”);
List launchables=pm.querytentActivities(电子邮件,0);
收藏
.sort(启动文件、新的ResolveInfo.DisplayNameComparator(pm));
适配器=新AppAdapter(pm,可启动设备);
gridView.setNumColumns(3);
setAdapter(适配器);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、,
整数位置,长arg3){
//TODO自动生成的方法存根
ResolveInfo launchable=adapter.getItem(位置);
ActivityInfo activity=launchable.ActivityInfo;
ComponentName=新的ComponentName(
activity.applicationInfo.packageName、activity.name);
email.addCategory(Intent.CATEGORY_启动器);
email.setFlags(Intent.FLAG\u活动\u新任务
|意图。标记活动重置任务(如果需要);
email.setComponent(名称);
startActivity(电子邮件);
}
});
builder.setView(gridView);
建造商。设定所有权(“股份”);
builder.show();
}
row.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="5dp" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:paddingBottom="2dp"
        android:paddingLeft="2dp"
        android:paddingRight="5dp"
        android:paddingTop="2dp" />

    <TextView
        android:id="@+id/label"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/icon"
        android:gravity="center_vertical"
        android:paddingBottom="2sp"
        android:paddingTop="4sp"
        android:textColor="@android:color/white"
        android:textSize="11pt" />

</LinearLayout>

适配器类:

class AppAdapter extends ArrayAdapter<ResolveInfo> {
        private PackageManager pm = null;

        AppAdapter(Context context, PackageManager pm, List<ResolveInfo> apps) {
            super(context, R.layout.row, apps);
            this.pm = pm;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = newView(parent);
            }

            bindView(position, convertView);

            return (convertView);
        }

        private View newView(ViewGroup parent) {
            return (getLayoutInflater().inflate(R.layout.row, parent, false));
        }

        private void bindView(int position, View row) {
            TextView label = (TextView) row.findViewById(R.id.label);

            label.setText(getItem(position).loadLabel(pm));

            ImageView icon = (ImageView) row.findViewById(R.id.icon);

            icon.setImageDrawable(getItem(position).loadIcon(pm));
        }
    }
类AppAdapter扩展了ArrayAdapter{
私有包管理器pm=null;
AppAdapter(上下文、PackageManager pm、列表应用程序){
超级(上下文、R.layout.row、应用程序);
this.pm=pm;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
convertView=newView(父级);
}
bindView(位置,转换视图);
返回(转换视图);
}
私有视图新建视图(视图组父视图){
返回(getLayoutInflater().flate(R.layout.row,parent,false));
}
私有void bindView(int位置,视图行){
TextView标签=(TextView)row.findViewById(R.id.label);
label.setText(getItem(position).loadLabel(pm));
ImageView图标=(ImageView)row.findViewById(R.id.icon);
icon.setImageDrawable(getItem(position).loadIcon(pm));
}
}

根据您的要求调用下面的对话框:

private void showAlertDialog() {
        PackageManager pm = getPackageManager();
        AlertDialog.Builder builder = new AlertDialog.Builder(this);
        GridView gridView = new GridView(this);

        email.putExtra(Intent.EXTRA_EMAIL,
                new String[] { "velmurugan@androidtoppers.com" });
        email.putExtra(Intent.EXTRA_SUBJECT, "Hi");
        email.putExtra(Intent.EXTRA_TEXT, "Hi,This is Test");
        email.setType("text/plain");
        List<ResolveInfo> launchables = pm.queryIntentActivities(email, 0);

        Collections
                .sort(launchables, new ResolveInfo.DisplayNameComparator(pm));

        adapter = new AppAdapter(pm, launchables);
        gridView.setNumColumns(3);
        gridView.setAdapter(adapter);
        gridView.setOnItemClickListener(new OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1,
                    int position, long arg3) {
                // TODO Auto-generated method stub
                ResolveInfo launchable = adapter.getItem(position);
                ActivityInfo activity = launchable.activityInfo;
                ComponentName name = new ComponentName(
                        activity.applicationInfo.packageName, activity.name);
                email.addCategory(Intent.CATEGORY_LAUNCHER);
                email.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
                email.setComponent(name);
                startActivity(email);
            }
        });


        builder.setView(gridView);
        builder.setTitle("Share");
        builder.show();
    }
private void showAlertDialog(){
PackageManager pm=getPackageManager();
AlertDialog.Builder=新建AlertDialog.Builder(此);
GridView GridView=新的GridView(此);
email.putExtra(Intent.EXTRA_email,
新字符串[]{”velmurugan@androidtoppers.com" });
email.putExtra(Intent.EXTRA_主题“Hi”);
email.putExtra(Intent.EXTRA_文本,“嗨,这是测试”);
email.setType(“文本/普通”);
List launchables=pm.querytentActivities(电子邮件,0);
收藏
.sort(启动文件、新的ResolveInfo.DisplayNameComparator(pm));
适配器=新AppAdapter(pm,可启动设备);
gridView.setNumColumns(3);
setAdapter(适配器);
setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView arg0、视图arg1、,
整数位置,长arg3){
//TODO自动生成的方法存根
ResolveInfo launchable=adapter.getItem(位置);
ActivityInfo activity=launchable.ActivityInfo;
ComponentName=新的ComponentName(
activity.applicationInfo.packageName、activity.name);
email.addCategory(Intent.CATEGORY_启动器);
email.setFlags(Intent.FLAG\u活动\u新任务
|意图。标记活动重置任务(如果需要);
email.setComponent(名称);
startActivity(电子邮件);
}
});
builder.setView(gridView);
建造商。设定所有权(“股份”);
builder.show();
}
row.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:gravity="center"
    android:orientation="vertical"
    android:padding="5dp" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="60dp"
        android:layout_height="60dp"
        android:paddingBottom="2dp"
        android:paddingLeft="2dp"
        android:paddingRight="5dp"
        android:paddingTop="2dp" />

    <TextView
        android:id="@+id/label"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_toRightOf="@id/icon"
        android:gravity="center_vertical"
        android:paddingBottom="2sp"
        android:paddingTop="4sp"
        android:textColor="@android:color/white"
        android:textSize="11pt" />

</LinearLayout>

适配器类:

class AppAdapter extends ArrayAdapter<ResolveInfo> {
        private PackageManager pm = null;

        AppAdapter(Context context, PackageManager pm, List<ResolveInfo> apps) {
            super(context, R.layout.row, apps);
            this.pm = pm;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            if (convertView == null) {
                convertView = newView(parent);
            }

            bindView(position, convertView);

            return (convertView);
        }

        private View newView(ViewGroup parent) {
            return (getLayoutInflater().inflate(R.layout.row, parent, false));
        }

        private void bindView(int position, View row) {
            TextView label = (TextView) row.findViewById(R.id.label);

            label.setText(getItem(position).loadLabel(pm));

            ImageView icon = (ImageView) row.findViewById(R.id.icon);

            icon.setImageDrawable(getItem(position).loadIcon(pm));
        }
    }
类AppAdapter扩展了ArrayAdapter{
私有包管理器pm=null;
AppAdapter(上下文、PackageManager pm、列表应用程序){
超级(上下文、R.layout.row、应用程序);
this.pm=pm;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
convertView=newView(父级);
}
bindView(位置,转换视图);
返回(转换视图);
}
私有视图新建视图(视图组父视图){
返回(getLayoutInflater().flate(R.layout.row,parent,false));
}
私有void bindView(int位置,视图行){
TextView标签=(TextView)row.findViewById(R.id.label);
label.setText(