Есть ли способ, которым мы можем настроить макет Share Intent? По умолчанию используется ListView, что делать, если клиент хочет все одинаково, но показывать сетку! Я знаю, как фильтровать необходимые приложения с помощью packageManager. Но я хочу изменить ListView на gridView со всем остальным.Поделиться Настроить: настроить макет
1
A
ответ
2
вызовов ниже диалога в соответствии с вашими требованиями:
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[] { "[email protected]" });
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();
}
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));
}
}
1
Я не думаю, что вы можете это сделать из коробки. Поэтому вам нужно создать свой собственный диалог с сеткой. Вот несколько примеров https://github.com/xinanadu/CustomShare/blob/master/app/src/main/java/info/zhegui/share/MainActivity.java
Смежные вопросы
- 1. Admobadapter настроить рекламный макет
- 2. Настроить макет страницы (непубликующий)
- 3. макет, как настроить
- 4. Как настроить макет?
- 5. gmock GTEST как настроить макет
- 6. SimpleCursorTreeAdapter - Как настроить макет ребенка
- 7. Как настроить макет h: selectOneRadio
- 8. Delphi - как настроить макет IDE
- 9. Настроить информационный макет фрагмента Mapbox
- 10. Как правильно настроить этот макет
- 11. Настроить поле сообщения на Facebook Поделиться
- 12. Как настроить макет, когда экранная клавиатура появляется
- 13. Как настроить макет сверху и снизу Android
- 14. RefineryCMS пытается настроить макет на страницу
- 15. Как настроить активное меню на макет?
- 16. Могу ли я настроить макет Android searchable.xml?
- 17. Как настроить макет статуса WPF StatusBar?
- 18. Как настроить мой макет для моей программы?
- 19. Как настроить ландшафтный макет только для планшетов?
- 20. Как настроить пользовательский макет в базовом адаптере
- 21. Как настроить макет заголовка диалогового окна
- 22. Как настроить XML-макет в Log4j?
- 23. Как настроить макет, который возвращает IHttpActionResult?
- 24. Как настроить макет перед загрузкой страницы
- 25. настроить один макет страницы продукта в woocommerce
- 26. Как настроить макет аннотации в HighCharts
- 27. Можно ли настроить макет внутри макета?
- 28. Как настроить макет главного меню в Android?
- 29. настроить и настроить laravel auth
- 30. Как настроить общий ccache
вы хотите показать только значок приложения в gridview или значок с именем? – Riser
приложение с именем. – Prachi