Попробуйте ввести код:
XML-файл:
Класс помощника:
public class BottomNavigationViewHelper {
public static void disableShiftMode(BottomNavigationView view) {
BottomNavigationMenuView menuView = (BottomNavigationMenuView) view.getChildAt(0);
try {
Field shiftingMode = menuView.getClass().getDeclaredField("mShiftingMode");
shiftingMode.setAccessible(true);
shiftingMode.setBoolean(menuView, false);
shiftingMode.setAccessible(false);
for (int i = 0; i < menuView.getChildCount(); i++) {
BottomNavigationItemView item = (BottomNavigationItemView) menuView.getChildAt(i);
//noinspection RestrictedApi
item.setShiftingMode(false);
// set once again checked value, so view will be updated
//noinspection RestrictedApi
item.setChecked(item.getItemData().isChecked());
}
} catch (NoSuchFieldException e) {
Log.e("BNVHelper", "Unable to get shift mode field", e);
} catch (IllegalAccessException e) {
Log.e("BNVHelper", "Unable to change value of shift mode", e);
}
}
}
В действии:
BottomNavigationView bnav = (BottomNavigationView) findViewById(R.id.bottomnav);
BottomNavigationViewHelper.disableShiftMode(bnav);
Файл меню:
Использование /Za
, кажется, позволяет их без включения iso646.h
, видеть его вживую , следующая программа выдает ошибку, не используя /Za
, но работает в противном случае:
int main()
{
int x = 1, y = 0 ;
if (x and y)
{
//...
}
return 0;
}
Поскольку ta.speot.is указывает, что / Za отключает расширения, следующая документация указывает, что вы должны включить ios646.h
в противном случае:
В разделе / Ze вам нужно включить iso646.h, если вы хотите использовать текстовые формы следующих операторов:
blockquote>, и в нем перечислены альтернативные токены ниже.
Заметьте, я знал, что видел это раньше, я включаю ссылку на сообщение об ошибке для этого в моем ответе на аналогичный вопрос. Хотя это не относится к обходному пути, отмеченному выше.
Примечание 2: Приветствия и hth. - Alf указывает, что может быть много нежелательных последствий для отключения расширения, и поэтому вам может быть лучше, включая
iso646.h
.
Используйте принудительное включение (опция /FI
) заголовка iso646.h
.
Для работы в командном интерпретаторе вы можете поместить это в среду CL
переменная или, например, в файле ответов.
Отключение расширений языка Visual C ++ с помощью /Za
также может сделать трюк за счет рендеринга компилятора бесполезно & ndash; поскольку код Microsoft, такой как заголовки Windows API, обычно использует расширения.
В более поздней версии VS (протестировано в версии 15.7.0 Preview 3.0); убедитесь, что для визуальной студии задан режим соответствия:
Затем он компилируется с альтернативными представлениями оператора .
<windows.h>
. – Cheers and hth. - Alf 24 September 2014 в 05:25