3

プログラムでビルドしたものに問題がありAlertDialogます。そのメッセージは、4.1.2 を実行しているエミュレーターに正しく表示されます。しかし、私のデバイス (2.3.7 を実行している Huawei U8510) では、メッセージは自動的に折り返されません。

AlertDialog がメッセージをラップできるように、コードに追加できるものはありますか? 私は明らかに手動の改行を追加したくありません。(問題は、手動で改行を追加しても、ダイアログには最初の行しか表示されないということです)

ここで何かが足りないと思いますが、どこにも答えが見つかりませんでした。それらはすべて手動で改行を追加することを指しています。

関連するコードは次のとおりです(はい、今のところハードコードされた文字列を使用しています):

AlertDialog.Builder builder= new AlertDialog.Builder( activity );
builder.setPositiveButton( ...
builder.setNegativeButton( ...
builder.setTitle( "Wirklich löschen?" );
builder.setMessage( "Soll das Item \"" + deleteItem + "\" wirklich gelöscht werden?" );
AlertDialog dialog= builder.create();
dialog.show();

そして、ここにスクリーンショットがあります。メッセージがエミュレーター (大きな画像) では正しく折り返されていることを確認できますが、デバイスでは示されません。

デバイス (2.3.7)

エミュレーター (4.1.2)

4

3 に答える 3

3

何が問題なのか、それがデバイス固有のものなのか、それとも何なのかはわかりませんが、この状況の回避策を提案できます.テキストビューと下部に2つのボタンがあるカスタムレイアウトを作成し、そのレイアウトをこのダイアログに添付できます. これで、必要に応じてテキストビューを処理できます...

于 2013-02-03T16:58:43.773 に答える
1

私は最近、Android Studio から Eclipse に戻されたプロジェクトでこの問題に遭遇しました。

この状況では、minSdkVersion が定義されていないことが問題でした。この属性を宣言しない場合、システムはデフォルト値の「1」を想定します。これは、アプリケーションが Android のすべてのバージョンと互換性があることを示します。

明らかに、API レベル 1 (Cupcake 1.5 よりも古い) では、AlertDialog メッセージ テキストがラップされませんでした。

追加することで問題は解決しました

<uses-sdk android:minSdkVersion="16" />

Android マニフェストに。このアプリケーションには、16 (Jelly Bean) の minSdkVersion が必要でした。AlertDialog がいつメッセージ テキストのラッピングを開始したかはわかりませんが、以前の API レベル、たとえば 10 (Gingerbread) も機能する可能性があります。

別のメモとして、以前のバージョンの Android で Theme.Holo を使用すると、この問題が発生する可能性があることを他の人が発見しました

于 2015-10-24T02:22:15.437 に答える
0

すべての Android バージョンで一貫したルック アンド フィールが必要な場合は、カスタム レイアウトの使用を検討する必要があります。

この場合、単純なTextView人が仕事をするべきです。必要に応じて、テキストの外観をスタイル設定、整列、および変更できます。

custom_dialog.xml :

<TextView
    android:id="@+id/custom_dialog_message"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:textColor="@color/white"
    android:textSize="20sp" />

次に、次のメソッドを使用してダイアログに適用します。

dialog.setContentView(R.layout.custom_dialog);
于 2013-02-03T17:30:53.157 に答える