2013-04-29 30 views
0

我正在開發與GridView的Android應用程序。 gridView包含按鈕。我已經使用按鈕適配器定製了我的GridView。Gridview選定的項目保持突出顯示,並確認圖像

問題是:我需要保持選中的項目用邊框突出顯示。現在選擇正在釋放印刷機後消失。
我不是Android專家。因此,按下按鈕後的下一步是顯示一個雲形狀圖像,其中顯示「確認」。

This是我確切需要的。

+0

我曾嘗試setSelection(true)。我沒有這個概念,這就是爲什麼我不能做任何事情。請給我建議一個方法,我有可選文件夾中的選擇器 – devian 2013-04-29 10:27:45

+0

github上的greenDroid有這樣的東西。你應該試試這個。 https://github.com/cyrilmottier/GreenDroid。首先看到圖像,然後嘗試執行此 – 2013-04-29 10:53:01

+0

也去彈出窗口。 http://androidresearch.wordpress.com/2012/05/06/how-to-create-popups-in-android/ – 2013-04-29 11:05:30

回答

3

在您的res文件夾中創建一個名爲drawable的文件夾。現在在drawable文件夾中創建一個xml文件,將其命名爲任何內容(以小型文件形式)並將此代碼放入文件中。

<?xml version="1.0" encoding="utf-8"?> 
<selector xmlns:android="http://schemas.android.com/apk/res/android"> 

    <item android:state_focused="true" android:state_pressed="true"><shape> 

      <!-- <solid android:color="#CCCCCC"/> --> 

      <gradient android:endColor="#67A7F8" android:startColor="#1067C8" /> 

      <stroke android:width="1dp" android:color="#000000" /> 

      <corners android:radius="8dp" /> 
     </shape></item> 
    <item android:state_focused="false" android:state_pressed="true"><shape> 

      <!-- <solid android:color="#07B107"/> --> 

      <gradient android:endColor="#67A7F8" android:startColor="#1067C8" /> 

      <stroke android:width="1dp" android:color="#000000" /> 

      <corners android:radius="8dp" /> 
     </shape></item> 
    <item android:state_focused="true" android:state_pressed="false"><shape> 
      <solid android:color="#FFFFFF" /> 

      <stroke android:width="1dp" android:color="#0055FF" /> 

      <corners android:radius="8dp" /> 
     </shape></item> 
    <item android:state_focused="false" android:state_pressed="false"><shape> 
      <gradient android:angle="270" android:centerColor="#FFFFFF" android:endColor="#FFFFFF" android:startColor="#F2F2F2" /> 

      <stroke android:width="0.8dp" android:color="#000000" /> 

      <corners android:radius="12dp" /> 
     </shape></item> 
    <item android:state_enabled="true"><shape> 
      <padding android:bottom="4dp" android:left="5dp" android:right="4dp" android:top="4dp" /> 
     </shape></item> 

</selector> 

現在在你的GridView代碼中設置android:drawSelectorOnTop="true"android:listSelector屬性,然後選擇你剛纔創建的drawable。它會解決你的問題。

網格視圖代碼看起來是這樣的:

<GridView 
     android:id="@+id/lstFrames_available_frames" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:layout_margin="10dp" 
     android:layout_weight="1" 
     android:animateLayoutChanges="true" 
     android:columnWidth="100dp" 
     android:gravity="center" 
     android:horizontalSpacing="3dp" 
     android:listSelector="@drawable/round_buttons" 
     android:numColumns="auto_fit" 
     android:drawSelectorOnTop="true" 
     android:stretchMode="columnWidth" 
     android:verticalSpacing="3dp" > 
    </GridView> 

UPDATE 您可以使用這樣的事情在你的自定義適配器來實現你想要的:

public class AlbumCoverAdapter extends BaseAdapter { 

    private Activity activity; 

    private static LayoutInflater inflater = null; 

    private int mSelected; 

    public AlbumCoverAdapter(Activity a) { 
     activity = a; 

     inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 

    } 

    public int getCount() { 
     return 50; 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 
     return position; 
    } 

    public static class ViewHolder { 
     public TextView txtCaption; 

     public ImageView imgImage; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     View vi = convertView; 
     ViewHolder holder; 
     if (convertView == null) { 
      vi = inflater.inflate(R.layout.grid_adapter, null); 
      holder = new ViewHolder(); 
      holder.txtCaption = (TextView)vi.findViewById(R.id.txtGridText); 
      holder.txtCaption.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View arg0) { 
        mSelected = (Integer)arg0.getTag(); 
        notifyDataSetChanged(); 
       } 
      }); 
      vi.setTag(holder); 
     } else 
      holder = (ViewHolder)vi.getTag(); 

     try { 
      holder.txtCaption.setTag(position); 

      if (position == mSelected) { 
       holder.txtCaption.setBackgroundResource(R.drawable.round_corner_background); 
      } else { 
       holder.txtCaption.setBackgroundDrawable(null); 

      } 

      holder.txtCaption.setText("Item: " + position); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     return vi; 
    } 

} 
+0

對不起Vipul :(再次同樣的問題,它消失的選擇。不突出 – devian 2013-04-29 11:19:51

+0

好吧。我已更新我的代碼。請檢查新代碼。 – 2013-04-29 11:21:54

+0

對不起Vipull .. :(沒什麼發生 – devian 2013-04-29 11:26:10