прекрасная идея, спасибо

бразил Snackbar с помощью CoordinatorLayout, но в некоторых макетах я не использовал раскладку CoordinatorLayout, и я хочу отобразить Snackbar, но столкнулся с проблемой.

Я пробовал следующий способ достижения закусочной без CoordinatorLayout, но он покажет следующий результат.

Snackbar.make(getActivity().getWindow().getDecorView().getRootView(), "Testing Snackbar", Snackbar.LENGTH_LONG).show();

Проверьте это с Android 8.0 Oreo

Есть ли способ достичь Snackbar без CoordinatorLayout?

Заранее спасибо.

код

public class FirstFragment extends Fragment {

RelativeLayout rootView;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_first, container, false);

        Log.e("onCreateView", "onCreateView");

        rootView = (RelativeLayout)view.findViewById(R.id.rootView);
        setSnackBar(rootView, "Testing with answered");
        return view;
    }

public static void setSnackBar(View coordinatorLayout, String snackTitle) {
        Snackbar snackbar = Snackbar.make(coordinatorLayout, snackTitle, Snackbar.LENGTH_SHORT);
        snackbar.show();
        View view = snackbar.getView();
        TextView txtv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
        txtv.setGravity(Gravity.CENTER_HORIZONTAL);
    }
}

Ответы на вопрос(2)

амой платформы Android

Snackbar.make(findViewById(android.R.id.content),"Your Text Here",Snackbar.LENGTH_SHORT).show();

 Manny26514 февр. 2018 г., 15:00
Я пытался показать снэк-бар внутри класса адаптера, это отлично работало, поскольку все, что я передавал адаптеру, это Context.
 Harvi Sirja07 июл. 2018 г., 08:23
прекрасная идея, спасибо
Решение Вопроса
public static void setSnackBar(View root, String snackTitle) {
  Snackbar snackbar = Snackbar.make(root, snackTitle, Snackbar.LENGTH_SHORT);
  snackbar.show();
  View view = snackbar.getView();
  TextView txtv = (TextView) view.findViewById(android.support.design.R.id.snackbar_text);
  txtv.setGravity(Gravity.CENTER_HORIZONTAL);
}

ет, такой какLinearLayout, RelativeLayout или жеScrollView, например:

setSnackBar(layout,"This is your SnackBar");  //here "layout" is your parentView in a layout

Не забудьте найти свой вид с помощьюfindViewById().

 Nilesh Panchal18 сент. 2017 г., 11:28
Прежде всего, спасибо за ответ, который я попробовал, но он выдаст следующую ошибку. Подходящего родителя не найдено из данного представления. Пожалуйста, предоставьте действительный вид.
 Shashwat Gupta18 сент. 2017 г., 11:34
@NileshPanchal в моем случае это работает для любого представления, я только что поместил этот код в свой класс Utils и вызвал этот метод, и он работает как шарм
 Shashwat Gupta18 сент. 2017 г., 12:50
Я не пробовал это во фрагменте, если вы хотите его во фрагменте, просто включите этот метод в действие и вызовите его из фрагмента.
 Shashwat Gupta18 сент. 2017 г., 11:47
@NileshPanchal вы предоставили и найти ваш родительский вид с идентификатором ??
 Shashwat Gupta18 сент. 2017 г., 11:48
@NileshPanchal, пожалуйста, оставьте свой код макета и код Java ...

Ваш ответ на вопрос