Я работал над моим старым ShareAction
на моем ActionBar
, и он работал с тех пор, как я обновил свои пакеты на SDK Manager
. Я видел этот документ из Google, в котором говорится:
Чтобы добавить действие "share" к вашей активности, поместите
ShareActionProvider
в ресурс меню панели приложения. Например:
И я добавил то же самое без добавления Icons
:
<item android:id="@+id/action_share"
android:title="@string/share"
app:showAsAction="ifRoom"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"/>
Я использовал:
app:actionProviderClass="Mypackagename.ShareActionProvider"
С пользовательским ShareActionProvider
со следующим кодом. Вы можете увидеть его здесь.
Я видел хак или трюк, чтобы сделать это (с ShareActionProvider
-v4), и все было хорошо, так как я решил использовать android.support.v7.widget.ShareActionProvider
.
Итак, вот мой код:
<item
android:id="@+id/shareac"
android:title="@string/share"
app:actionProviderClass="android.support.v7.widget.ShareActionProvider"
app:showAsAction="always" />
Я не использовал Icon
, потому что здесь в документе говорится:
Вам не нужно указывать значок, так как
ShareActionProvider
виджет заботится о своем внешнем виде и поведении. Однако вы делаете нужно указать заголовок с андроидом: название, в случае, если действие закончится в меню переполнения.
И вот что я сделал до сих пор:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main_details, menu);
// Locate MenuItem with ShareActionProvider
MenuItem item = menu.findItem(R.id.shareac);
// Fetch and store ShareActionProvider
mShareActionProvider = (ShareActionProvider) MenuItemCompat.getActionProvider(item);
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
Bundle extra = getIntent().getExtras();
String title = extra.getString("title");
Bundle extraurl = getIntent().getExtras();
String url = extraurl.getString("url");
shareIntent.putExtra(Intent.EXTRA_TEXT, "Check this new project from something : " + title + url);
shareIntent.setType("text/plain");
mShareActionProvider.setShareIntent(shareIntent);
return true;
}
Итак, вот что я вижу прямо сейчас в Android Studio 1.5.1 Is,
И если запустить и скомпилировать приложение:
Как вы можете видеть, размер ShareAction
слишком большой. (Он нарушает руководство MaterialDesign
, я думаю).
Я забыл сказать, что я уже пробовал android:icon="@mipmap/ic_share"
, который работал с моим предыдущим методом/трюком. Но проверьте этот предварительный просмотр с AndroidStudio
:
И вот после компиляции:
Ничего не изменилось!
Итак, мой вопрос: это ошибка или что я делаю неправильно здесь?
Intent.createChooser
тоже не работал: from: qaru.site/info/415858/...
Изменить:
Самая интересная часть, я только что увидел тот же дизайн и те же результаты из Google в следующем курсе и в том приложении, которое они назвали SunShine.
Курс:
https://www.udacity.com//course/viewer#!/c-ud855/l-3961788738/m-4294896397