2017-09-18 16 views
3

私はCoordinatorLayoutを使用してスナーバーを表示しましたが、レイアウトによってはコーディネーターレイアウトを使用していないため、スナックバーを表示したいが問題に直面していました。コーディネーターレイアウトなしのスナックバー表示

CoordinatorLayoutを使わずにsnackbarを達成するために以下の方法を試しましたが、次の結果が表示されます。アンドロイド8.0オレオ

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

enter image description here

テストは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); 
    } 
} 

答えて

6
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); 
} 

ただ、例えば、上記のメソッドを呼び出すと、すべての親のレイアウトなどLinearLayoutRelativeLayoutまたはScrollViewを渡す:

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

をあなたのビューを見つけることを忘れないでくださいfindViewById()を使用してください。

+0

...このコードの簡単な作品をお試しください。有効なビューを提供してください。 –

+0

@NileshPanchal私の場合はどのビューでも動作していますが、このコードを私のUtilsクラスに入れてこのメソッドを呼び出すと、それは魅力的なものです –

+0

@NileshPanchalあなたはidを持つ親ビューを提供していますか? –

4

は、私が試してみましたが、それは次のようなエラー に与えられたビューは見つかりませ適した親を与えないだろう答え のためのすべての感謝の最初に

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

+0

私はアダプタークラスの中にスナックバーを表示しようとしていました。 – Manny265

関連する問題