2016-09-07 23 views
0

私はAndroidアプリを開発中です。私のアプリでは、ダイアログにデータを表示したい。基本的には、ボタンをクリックするとダイアログにActivityを表示したいと思います。私はダイアログとしてActivityを表示する方法を知っています。現在、どのように活動をダイアログとして表示しているかを下に見てください。Androidでカスタムダイアログでアクティビティを表示

は私が活動を開くので、この

<activity 
    android:configChanges="orientation|screenSize" 
    android:name=".MakeCommentActivity" 
    android:label="Comment" 
    android:theme="@android:style/Theme.Holo.Light.Dialog" > 
    <intent-filter> 
     <action android:name="android.intent.action.VIEW" /> 
     <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</activity> 

ようAndroidManifestActivityを設定します。次のようにダイアログとして表示されます。

enter image description here

あなたはスクリーンショットで見ることができるように、上記のコードの問題は、私は完全にデザインを制御することはできませんです。私は、私が望むようにダイアログの背景色を設定できないということです。私はデバイスに応じて変更されます。私はダイアログのテーマを変更することはできません。また、ダイアログのタイトルなどを削除することはできません。

上のスクリーンショットのように、この

enter image description here

を見てください、私は完全にデザインを制御しています。タイトルにアイコンを追加できます。私はどんなテーマでも好きなものを設定することができます。

私は、カスタム表示で警告ダイアログを使用すると思います。しかし、私がそれを行うと、すべてのロジックとコードが親アクティビティの場所になるため、コードはきれいで清潔ではありません。別のアクティビティではありません。

私の質問は、どのようにデザインで完全にカスタマイズできるダイアログとしてActivityを開くことができますか?完全にカスタマイズできない場合は、カスタム表示で警告ダイアログを使用するのは良い考えですか?私はFacebookのようなコメントを表示するので。ユーザーはコメントも作成できます。

答えて

1

を望むように、あなたがそれを制御することができますこの方法: あなたが望むものを達成するための最良の方法は、custom view Dialogを作成することです透明な背景を持つアクティビティオンクリックリスナーが正式に配置されます(たとえば、透明な背景をクリックするとアクティビティが終了します)。したがって、これらのアクティビティをアラートダイアログのカスタマイズに比べて簡単に作成することができます。

+0

が活動に透明に設定する方法をしてくださいです。リンクはありますか? –

+0

(http://nullpointerbay.com/2015/08/13/android-appcompat-design-lib-activity-transparency.html)は、基本を説明します。他の関連するSOの答え[ここ](http://stackoverflow.com/questions/17542517/activity-with-transparent-background)と[ここ](http://stackoverflow.com/questions/2176922/how-to) -create-transparent-activity-in-android) –

1

あなたが実際にやっていることは、あなたの活動のテーマを変えているということです。

//Here you inflate your design (xml layout) 
View view = getLayoutInflater().inflate(R.layout.your_view, null); 
//Here you can get any component of that layout (ex: textView) 
TextView yourTextView = view.findViewById(R.id.your_textview_id); 
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setView(view); 
    AlerdDialog alert = builder.create(); 
    alert.show(); 

あなたはこれらの一見美しいアラートダイアログがalertdialogs全くなくはないよりも頻繁に

0

基本的にAlertDialogを使用できます。アンドロイドのAlertDialogを使用してOKとキャンセルボタンでダイアログメッセージを表示できます。それを中断し、ユーザに継続または中止の選択について尋ねるために使用することができます。 タイトルコンテンツエリアアクションボタン

のAndroid AlertDialogは三つの領域で構成されています。あなたの場合のように必要がない場合は、アクションボタンを残すことができます。

AlertDialog.Builder builder = new AlertDialog.Builder(this); 
//Setting message manually and performing action on button click 

     builder.setMessage("Do you want to close this application ?") 
      .setCancelable(false) 
      .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
       finish(); 
       } 
      }) 
      .setNegativeButton("No", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
       // Action for 'NO' Button 
       dialog.cancel(); 
      } 
      }); 

     //Creating dialog box 
     AlertDialog alert = builder.create(); 
     //Setting the title manually 
     alert.setTitle("AlertDialogExample"); 
     alert.show(); 

このように出力されます。 enter image description here

0

AlertDialogを使用する方が良いです。なぜなら、あなたがテーマでやっていれば、異なるバージョンのデバイスではその外観が変わるからです。

1

私はのテーマタイプDialogで働いていました。簡単にカスタマイズ可能で、別のクラスにログインしたときにコードがきれいになります。

私は何かお勧めしたいと思います。まず、intent-filterを削除します。私は実際にintent-filterが使われている理由を実際には知りませんが、とにかく、それほど必要ではないようです。

<activity 
    android:configChanges="orientation|screenSize" 
    android:name=".MakeCommentActivity" 
    android:label="Comment" 
    android:theme="@android:style/Theme.Holo.Light.Dialog" > 
</activity> 

ダイアログであるActivityのレイアウトは重要です。カスタマイズされた動作が得られるかどうかを確認するには、layout_heightlayout_widthmatch_parentを設定する必要があります。

あなたActivityonCreate関数からsetTitleによって容易に変化させることができるActivityのラベルについて言及した他の事。

ここ

public class DialogActivity extends Activity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_dialog); 

     setTitle("My custom title"); 
    } 
} 

例えば私のDialogActivityだし、ここで使用するレイアウトは

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:background="@android:color/white" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <View 
     android:layout_width="match_parent" 
     android:layout_margin="@dimen/activity_horizontal_margin" 
     android:background="@android:color/black" 
     android:layout_height="200dp" /> 

    <View 
     android:layout_width="match_parent" 
     android:layout_height="400dp" 
     android:background="@android:color/black" /> 

</LinearLayout> 
+0

しかし、テーマの色はデバイスによって変わります。右? –

+0

親の 'LinearLayout'に背景色を設定して色をカスタマイズすることもできます。編集された答えを見る –

関連する問題