在gridview项目上单击显示浮动按钮或菜单

时间:2016-03-04 09:37:56

标签: android android-layout android-gridview popupmenu android-contextmenu

我有这样的网格视图:

enter image description here

现在,当我点击按钮的铅笔图标时,在gridview项目中,我想显示三个按钮。也许像浮动按钮。

我的布局:

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:paddingRight="10dp"
    android:paddingTop="10dp"
    android:layout_gravity="right|bottom" >

    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageButton"
        android:src="@drawable/pencil"
        android:background="@color/listrow"
        android:layout_gravity="right|bottom" />
    <ImageButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageButton1"
        android:src="@drawable/pencil"
        android:background="@color/listrow"
        android:layout_gravity="right|bottom"
        android:visibility="gone" />

</LinearLayout>

我的代码显示按钮消失在positison项目网格:

pen = (ImageButton) v.findViewById(R.id.imageButton);
        pen1 = (ImageButton) v.findViewById(R.id.imageButton1);
        pen.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                pen1.setVisibility(View.VISIBLE);
                Toast.makeText(Activity.this, "At: "+position, Toast.LENGTH_SHORT).show();
            }
        });

任何人都可以给出任何理想吗?

4 个答案:

答案 0 :(得分:1)

单击铅笔图像时最好实现弹出菜单。通过使用弹出菜单,我们可以为每个菜单项添加多个按钮和操作。 要实现popupmenu,请检查此url :: http://javatechig.com/android/android-popup-menu-example

答案 1 :(得分:0)

如果添加一些按钮并将可见性设置为Visibility.GONE

,该怎么办?

答案 2 :(得分:0)

您可以为gridview项创建ContextMenu。

首先,在您的活动onCreate()中,为contextMenu注册gridview:

registerForContextMenu(myGridview);

现在,您应该覆盖两种方法onCreateContextMenu()onContextItemSelected()

@Override   
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)  
{  
        super.onCreateContextMenu(menu, v, menuInfo);  
        menu.setHeaderTitle("Select The Action");    
        menu.add(0, v.getId(), 0, "action one");//groupId, itemId, order, title   
        menu.add(0, v.getId(), 0, "action two");   
} 

.
.
.

@Override    
public boolean onContextItemSelected(MenuItem item){    
        if(item.getTitle().equals("action one"){  
             //your code
        }    
        else if(item.getTitle().equals("action two"){  
           //your code
        }else{  
           return false;  
        }    
      return true;    
  }    
}  

当用户长按元素时,会出现Android上下文菜单。它也被称为浮动菜单。

答案 3 :(得分:0)

在该适配器类中添加实现OnMenuItemClickListener。

class Abc extends BaseAdapater implements OnMenuItemClickListener{

//override all implement menthods of BaseAdaptar and OnMenuItemClickListener

// now in method add popupmenu on item
 @Override
    public View getView(final int position, View view, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if (view == null)
            view = inflater.inflate(R.layout.product_layout, parent, false);//Inflate layout

        TextView name = view.findViewById(R.id.productname);
name.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            PopupMenu popupMenu = new PopupMenu(ctx, finalView);
            popupMenu.setOnMenuItemClickListener(Abc.this);
popupMenu.inflate(R.menu.product_menu);
 popupMenu.show();
            }
        });

// override menu click event code as your menu items
@Override
    public boolean onMenuItemClick(MenuItem item) {
return false;
}
}

如果您有任何疑问,请评论我。