2013-04-20 4 views
5

ボタンをクリックするとクイックアクションダイアログを表示する必要があるアプリケーションを開発しています。ここで私はそれを実装したい例です。アンドロイドのクイックアクションダイアログをカスタマイズする

What I want to implement.

今まで私は、カスタム迅速な行動ダイアログを作成する方法を見つけ出すことができませんでした。しかし、私はアクティビティと私が達成しなければならないものの近くを使ってみました。ここまで私が今まで何をしたのですか?

if (v.getId() == R.id.points) { 
     Toast.makeText(MainActivity.this, "Clicked on points", 
       Toast.LENGTH_SHORT).show(); 
     Intent i = new Intent(MainActivity.this, PointsActionMenu.class); 
     startActivity(i); 
    } 

そして、私が活動を透明にするためにstyles.xmlを使用している:私は活動への意図を渡しているボタンをクリックするだけで

。私は私の画面上で、このUIを持っているこれらのものを実装する

のstyles.xml

<style name="Theme.Transparent" parent="android:Theme"> 
    <item name="android:windowIsTranslucent">true</item> 
    <item name="android:windowBackground">@android:color/transparent</item> 
    <item name="android:windowContentOverlay">@null</item> 
    <item name="android:windowNoTitle">true</item> 
    <item name="android:windowIsFloating">true</item> 
    <item name="android:backgroundDimEnabled">false</item> 
</style> 

。私は活動を使用して、私のニーズに合わせて動作するようにレイアウトを設計している

  1. Reached till here

    は今、私は2つの質問があります。 には、クイックアクションダイアログを使用してこれを実装する簡単な方法があります。私は その2〜3の例を通過したが、私は 私の必要に応じてカスタマイズすることができませんでした。

  2. アクティビティを使って実装している限り、画面の中央に表示されています。 のデフォルトの場所を右隅に変更できますか?

いずれかの答えが私を助けます。

これについては、どんな種類のヘルプをいただければ幸いですか?

+0

あなたは 'アンドロイドを試みたことがありますか? –

答えて

2

私は私の問題を解決したと思います。ここでそれは今見た目です。

What I found

統合ITの位置を設定するための次のコード。

WindowManager.LayoutParams wmlp = this.getWindow().getAttributes(); 

    wmlp.gravity = Gravity.TOP | Gravity.LEFT; 
    wmlp.x = 80; // x position 
    wmlp.y = 60; // y position 
+0

あなた自身の答えを正しいものとしてマークしてください。 –

+0

他の画面サイズと密度でテストしましたか?単一のデバイス上でのみ動作させたい場合を除き、後で頭痛を引き起こす可能性があります。 – RobGThai

+0

@Anupam私も同様の種類のポップアップダイアログを開発しています。ポップアップウィンドウのコードを共有できますか? – GrIsHu

2

さまざまなデバイスや画面サイズで何が起こるかを考えたい場合があります。 これでDPするピクセルをスケーリング考えてみましょう:

int x = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics()); 
int y = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 60, getResources().getDisplayMetrics()); 

EDIT:数の問題#2のgravity`:

wmlp.x = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 80, getResources().getDisplayMetrics()); 
wmlp.y = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 60, getResources().getDisplayMetrics()); 
+0

どこに実装すればよいですか? – Anupam

+0

私の返答を編集しました。 - その関数は、あなたが提供する "ピクセル"値を適切な "dp"値に変換します。 – LuckyMe

関連する問題