2

この投稿とは正反対の問題があります。具体的には、トーストをデフォルトの場所(中央、下部のステータスバーのすぐ上)に表示したいのですが、常に水平方向と垂直方向の中央に表示されます。

これがトーストを表示するために使用しているコードと呼び出しです(toastNavigationメソッドは呼び出しとは別のクラスにあります):

public static void toastNavigation(Context context, CharSequence message,
        int duration, int gravity, int gravity_xOffset, int gravity_yOffset) {  
    Toast toast = Toast.makeText(context, message, duration);  
    toast.setGravity(gravity, gravity_xOffset, gravity_yOffset);  
    toast.show();
}

toastNavigation(this, 
    "My message", Toast.LENGTH_SHORT, Gravity.NO_GRAVITY, 0, 0);

「...重力が設定されていません。」という定数を渡しても、トーストが中央に配置されるのはなぜですか。コンテキストから継承されたGRAVITY定数をクリアするために渡す必要のある他の定数はありますか?

4

4 に答える 4

4

setGravity()デフォルト値が必要な場合は、呼び出す正当な理由があると思います。

トーストのデフォルトの重力設定はGravity.CENTER_HORIZONTAL | Gravity.BOTTOMです。これらを適用して、デフォルトの配置を取得できます。

これはToastのソースで確認できます...mGravityフィールドの初期化を確認してください。

于 2011-11-03T21:19:23.530 に答える
1

私の場合、重力設定なしのトーストのデフォルトの位置は、下から1 / 3〜1/4上です。

デフォルトとしてよく引用されるGravity.BOTTOMは、実際には画面の一番下に重力を設定します。また、Gravity.NO_GRAVITYは、実際のデフォルトの場所ではなく、Gravity.CENTERと同じように、画面の中央にトーストを設定することもわかりました。これはかなり苛立たしいです。トーストを実際のデフォルトの場所に戻す設定をまだ見つけていません。新しいトーストを作成する必要がありました。

于 2019-11-03T18:41:41.257 に答える
0

トーストを画面に表示するようにコードを確認しました。1つのことを行います。setGravityメソッドの呼び出しを削除してください。そうすると、要件に従って、トーストが正確な場所に表示されます。トーストの重力としてNO_GRAVITYを設定しようとすると、この場合、トーストはデフォルトの重力を選択し、トーストのデフォルトの重力の値はウィンドウの中央に配置されます(ダイアログの場合と同じ)。ご不明な点がございましたらお知らせください。ありがとう。

于 2014-01-29T06:19:15.873 に答える
-2

デフォルトの場所にトーストを表示したい場合は、次のように呼び出します。

    Toast.makeText(context, message, duration).show();

これにより、トーストが標準の場所に表示されます。私の推測では、NO_GRAVITYはトーストのデフォルト設定ではありません。おそらく重力下部を使用し、ay値を適用して画面の下部から表示します。

于 2011-11-03T21:14:14.390 に答える