2016-11-04 13 views
2

以下のように単純なドロップダウンリスト/ listviewを作成したいと思います。 xmlレイアウトを使用せずにプログラムで生成する必要があります。単純なドロップダウンリスト/リストビューをプログラムでアンドロイドで作成する方法

私はここでスピナーを使用していません。また、スイッチの横にあるImageViewをクリックすると開きます。

enter image description here

私はこのことについては考えています。

アイデアをお持ちですか?

+1

の可能性のある重複した[ドロップダウンリストを作成する方法?](http://stackoverflow.com/questions/13377361/how-to-create-a -drop-down-list) –

+1

なぜプログラムでなければならないのですか? – MidasLefko

+0

@MidasLefko:上に動的に行を追加しました。したがって、他のコンポーネントを動的に生成する必要があります。 – Barrier

答えて

2

私はこれにPopupMenu'sを使用します。 this guideも参照してください。このガイドでは、PopupMenuをxmlメニューリソースで使用する方法について説明します。

あなたの場合、クリックリスナーをImageViewに添付します。そのリスナーは、ImageViewをアンカーとして使用してPopupMenuを作成します。このように:あなたは、ANを作成することができます(PopopMenu.getMenuを呼び出す)、手動でのMenuItem

  • を移入することができます

    1. :あなたは、動的メニュー項目を必要とするので、PopupMenu popup = new PopupMenu(imageView.getContext(), imageView);

      この時点で、次のオプションを持っていますその後、XMLのメニューリソースと

  • +0

    ありがとう、私はこれを試してあとでお知らせします。 – Barrier

    4

    ない完璧を変更する必要があるが、それが動作/非表示のものを調整;)

    button.setOnClickListener(new View.OnClickListener() { 
         @Override 
         public void onClick(View v) { 
          PopupMenu popupMenu = new PopupMenu(MainActivity.this, button); 
          popupMenu.getMenu().add("Edit"); 
          popupMenu.getMenu().add("Delete"); 
          popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
           @Override 
           public boolean onMenuItemClick(MenuItem item) { 
            switch (item.getTitle().toString()) { 
             case "Edit" : 
              //execute "edit" action 
              break; 
             case "Delete" : 
              //execute "delete" action 
              break; 
            } 
            return false; 
           } 
          }); 
          popupMenu.show(); 
         } 
        }); 
    
    +0

    答えをありがとう。しかし、私はこれを使うことに問題があります。最後のポップアップメニューがボタンの上に表示されています。どうすればそれを止めることができますか?私はGravityを設定しようとしましたが、うまくいきませんでした。 – Barrier

    +0

    http://stackoverflow.com/questions/34565481/add-a-drop-down-menu-for-each-item-of-custom-listview –

    +0

    @Barrier Gladを参考にしてください。アンカーボタンの下に十分なスペースがあれば?ドキュメントから:「ポップアップはアンカーの下に表示されます(空きがある場合は表示されません)。 –

    2
    Just try to check and implement it 
    
        PopupMenu overflowPopupMenu = new PopupMenu(getContext(), finalOverflow); 
        overflowPopupMenu.getMenuInflater().inflate(R.menu.popup_overflow_options, overflowPopupMenu.getMenu()); 
    
        overflowPopupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { 
         @Override 
         public boolean onMenuItemClick(android.view.MenuItem item) { 
            switch (item.getItemId()) { 
              case R.id.edit: 
               break; 
              case R.id.delete: 
               break; 
            } 
              return true; 
           } 
        }); 
        overflowPopupMenu.show(); 
    

    popup_overflow_options.xml

    <?xml version="1.0" encoding="utf-8"?> 
    <menu xmlns:android="http://schemas.android.com/apk/res/android" 
        > 
        <item 
         android:id="@+id/edit" 
         android:title="@string/edit"/> 
        <item 
         android:id="@+id/delete" 
         android:title="@string/delete"/> 
    </menu> 
    
    関連する問題