0

この例のように、カスタム スナックバーを表示しようとしています。

スナックバーのレイアウトをカスタマイズするには?

これは、スナックバーを作成するための私のカスタム コードです。

protected void showSnackBar(View view) {

    Snackbar snackbar = Snackbar.make(view, "", Snackbar.LENGTH_INDEFINITE);
    Snackbar.SnackbarLayout layout = (Snackbar.SnackbarLayout) snackbar.getView();
    TextView textView = (TextView) layout.findViewById(android.support.design.R.id.snackbar_text);
    textView.setVisibility(View.INVISIBLE);

    LayoutInflater inflater = LayoutInflater.from(this);

    View snackView = inflater.inflate(R.layout.custom_snackbar, null);

    layout.addView(snackView, 0);

    ViewGroup group = (ViewGroup) snackbar.getView();
    group.setBackgroundColor(ContextCompat.getColor(this, R.color.green_wasabi));

    snackbar.show();

}

私の目標は、基本アクティビティに他のアクティビティから呼び出すメソッドを用意することです。

しかし、私の問題は、キーボードの下に表示されるスナックバーを表示するときです。

例

さらに、レイアウトのすべてのビューが表示されるわけではありません。

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/relativelayout_sync_schedule_runs"
android:layout_height="wrap_content"
android:layout_width="match_parent"
android:padding="10dp"
android:background="@color/green_wasabi"
android:layout_alignParentBottom="true"
android:layout_gravity="center_horizontal|bottom">

<ProgressBar
    android:id="@+id/progressbar_infinite"
    android:layout_width="30dp"
    android:layout_height="30dp"
    style="@android:style/Widget.Material.ProgressBar.Small"
    android:layout_centerVertical="true"
    android:layout_marginRight="15dp"
    android:layout_toLeftOf="@+id/textview_sync_runs"
    android:layout_toStartOf="@+id/textview_sync_runs" />


<com.runator.ui.widget.text.CustomTextView
    android:id="@+id/textview_sync_runs"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/import_runs"
    android:textColor="@color/black_midnight"
    style="@style/texts.medium_medium_big"
    app:font_type="bold"
    android:gravity="center"
    android:layout_centerHorizontal="true"
    android:layout_centerVertical="true"/>

誰かが何か提案があれば、私はそれを喜んで聞きます。

前もって感謝します。

4

3 に答える 3

3

まず、xml ファイルで既に行っているため、プログラムで背景色を設定する必要はありません。したがって、これらの行を削除します。

ViewGroup group = (ViewGroup) snackbar.getView();
group.setBackgroundColor(ContextCompat.getColor(this, R.color.green_wasabi));

次に、Coordinator Layoutの代わりにアクティビティを引数として渡してみてくださいLinear/Relative Layout。つまり、アクティビティの親レイアウトとしてコーディネーター レイアウトを追加して渡します。

xml ビューでコーディネーター レイアウトのレイアウト境界を確認します。活動の範囲を広げてはなりません。

于 2016-04-07T15:08:07.463 に答える