2016-02-16 23 views
8

私はAndroidには新しく、Listviewポップアップメニューを作成しています。しかし、私はそれがwidthheightの問題です。ポップアップメニューの高さと幅はさらに大きくなります。あまりにも多くの質問がありますが、これらのどれも私を助けませんでした。 Androidのポップアップメニューの問題ListView

は、私が法以下を試してみましたポップアップメニューを作成します。 たContextMenuにそれを使用

enter image description here

2]:この出力を与える

private void showPopupMenu(View view){ 
     Context wrapper = new ContextThemeWrapper(this, R.style.PopupMenu); 
     PopupMenu popupMenu = new PopupMenu(wrapper,view); 

     popupMenu.getMenuInflater().inflate(R.menu.popup_menu,popupMenu.getMenu()); 
     popupMenu.show(); 

     popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){ 
      @Override 
     public boolean onMenuItemClick(MenuItem item){ 
       switch (item.getItemId()){ 
        case R.id.install: 
         Intent intent = new Intent(ViewAllRelationActivity.this,EditRelativeActivity.class); 
         startActivity(intent); 
         break; 
        case R.id.addtowishlist: 
         break; 

       } 
       return false; 
      } 
     }); 
    } 

:以下のコードでポップアップメニューを使用

1]出力表示されます。

を我々はのContextMenuに幅と高さを維持することができる。しかし、それは常にセンターnot each row of our Listview Dataに表示

enter image description here

しかし、私はbelow Image type Popup menuをしたいです。 幅と高さが小さい

enter image description here

このためのソリューションを提供してください。

+0

http://stackoverflow.com/a/22311108/5093666この回答が役に立つかもしれない – curiousMind

答えて

2

以下のようにxmlファイルを使用せずにこれらのオプションをプログラムで追加することができます。これが役立つかもしれません。

ここで、ONEとTWOは、ポップアップメニューで指定しているオプションのインデックスを表示しています。第二の位置に第一位置EDIT POSTは画像をクリック開いたポップアップメニューでPOSTなど

1)を削除するように:あなたは、アダプタを使用している場合

private final static int ONE = 1; 
private final static int TWO = 2; 

PopupMenu popupMenu = new PopupMenu(this, findViewById(R.id.img_detail_information_options)); 
popupMenu.getMenu().add(Menu.NONE, ONE, Menu.NONE, getResources().getString(R.string.detail_information_edit_post)); 
popupMenu.getMenu().add(Menu.NONE, TWO, Menu.NONE, getResources().getString(R.string.detail_information_remove_post)); 
popupMenu.setOnMenuItemClickListener(this); 
popupMenu.show(); 
+0

このコードは機能しません。 – Harshad

+0

エラーが発生しますか? – Bhavnik

+0

ONEとTWOが見つかりません。また、popupMenu.setOnMenuItemClickListener(this);私にエラーを与える。 – Harshad

2

、あなたは(getViewメソッドに入れることができます。アダプタで..)メソッド

imvMore.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showPopupMenu(act,v); 
     } 
    }); 

と置く方法

private void showPopupMenu(Activity act, View view){ 
    PopupMenu popupMenu = new PopupMenu(act,view); 
    popupMenu.getMenuInflater().inflate(R.menu.menu_popup, popupMenu.getMenu()); 
    popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
     @Override 
     public boolean onMenuItemClick(MenuItem item) { 
      switch (item.getItemId()) { 

      } 
      return true; 
     } 
    }); 
    popupMenu.show(); 
} 
アダプタクラスの

注:活動の

public YourAdapter(Activity act, ArrayList<ItemOfYourModel> data){ 
    this.data = data; 
    this.act = act; 
} 

、あなたがコーディングすることができます:行為は、あなたがコンストラクタアダプタ、例を作成するときにバインドする必要があり活動である

ArrayList<ItemOfYourModel> listData = new ArrayList<ItemOfYourModel>(); 
listData.add(new YourItemOfYourModel(...)); 
YourAdapter adapter = new YourAdapter(this,listData); 
+0

アダプターの動作をバインドする方法を広く記述してください。 – Harshad

+0

@ Harshad、どのアダプターとアクティビティーを使用しましたか?リストビューやリサイクルビューを使用しましたか? – dolphin

+0

listviewとBaseAdapter – Harshad

1

私が思うに、このの最善の解決策がにありますPopupWindowを使用すると、そのすべてを制御することができ、必要なメニューを作成するのは非常に簡単です。

2

ListPopupWindowを使用して、達成したいことを得ることができます。ポップアップウィンドウのアンカーとして、より多くのオプションアイコンまたはメニューアイコンを設定することができます。

ListPopupWindow mListPopupWindow; 
mListPopupWindow = new ListPopupWindow(this, null); 
mListPopupWindow.setWidth(300); 
mListPopupWindow.setAnchorView(menuIcon); 
mListPopupWindow.setHeight(200); 
mListPopupWindow.setAdapter(yourAdapter); 
mListPopupWindow.show(); 

あなたが望むものを手に入れることができます。

+0

この解決法は私にとっては役に立たない。 – Harshad

+0

これにはどんな問題がありますか? – Vishal

+0

ディスプレイセンターそれはダイナミックにしたいですか? – Harshad

1

Google PlayではPopupMenuHoloテーマを使用しています。あなたは、あなたのstyles.xmlでカスタムstyleを作成することによって、同じことを行うことができます。

<style name="PopupMenuStyle" parent="android:Theme.Holo.Light"> 
     <!-- Your custom attributes must be put here. This is optional, but the parent must not be changed --> 
</style> 

そして、あなたのコード内でPopupMenuスタイルを変更:

Context wrapper = new ContextThemeWrapper(this, R.style.PopupMenuStyle); 
PopupMenu popupMenu = new PopupMenu(wrapper,view); 
+0

私はこのBut Menu DisplayをContextMenuのような中心に使用しました。私はListViewの各行を必要とします。 – Harshad

+0

これはビュー全体に設定する必要があります。代わりに、Google Playのようなボタンをリストアイテムに追加します。それは中央に現れません。 – Piyush

+0

どのようにして幅と高さを設定することができます私の最初のConditonの質問。 – Harshad

関連する問題