2012-06-02 11 views
7
में कस्टम लेआउट से बिल्डिंग ActionMode

मैं सिर्फ अपनी पहली स्क्रीन में कुछ सरल अनुप्रयोग, के निर्माण के लिए ActionBarSherlock का उपयोग कर शुरू कर मैं साधारण सूची है और मैं सूची में नए आइटम को जोड़ने के लिए नए मेनू आइटम कहा:ActionBarSherlock

MenuItem newItem = menu.add("New"); 
newItem.setIcon(R.drawable.ic_compose_inverse) 
    .setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM); 

अब जब उपयोगकर्ता एक नया आइटम मैं नए आइटम को जोड़ने के लिए एक नया कार्रवाई मोड शुरू करना चाहते जोड़ने के लिए चुनते हैं, तो इस कार्रवाई मोड पाठ बॉक्स और एक बटन के साथ एक सरल लेआउट को शामिल करना चाहिए, तो मैं इस लेआउट बनाया:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

     <EditText 
      android:id="@+id/text" 
      android:layout_width="0dp" 
      android:layout_height="wrap_content" 
      android:layout_weight="1" 
      android:inputType="text" > 
     </EditText> 
     <Button 
      android:id="@+id/addBtn" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="@string/add" /> 
</LinearLayout> 

तो अब मुझे बस से जरूरी है टी नई कार्रवाई मोड में बार को यह लेआउट:

newItem.setOnMenuItemClickListener(new OnMenuItemClickListener() { 
      @Override 
      public boolean onMenuItemClick(MenuItem item) { 
       actionMode = startActionMode(new MyAction(ListEditor.this)); 
       return true; 
      } 
     }); 

और मेरे कार्रवाई में:

private final class MyAction implements ActionMode.Callback { 
    ... 
    @Override 
    public boolean onCreateActionMode(ActionMode mode, Menu menu) { 
     View customNav = LayoutInflater.from(context).inflate(R.layout.add_item, null); 
     getSupportActionBar().setCustomView(customNav); 
     getSupportActionBar().setDisplayShowCustomEnabled(true); 
     return true; 
    } 
} 

तो मूल रूप से मैं ActionModes और शर्लक उदाहरण से CustomNavigation के बीच कुछ चाहिए, लेकिन समस्या यह है कि यह मुख्य बार में लेआउट सेट करता है न कि नई बार के लिए जो कार्रवाई के लिए खुलता है।

कोई सुझाव?

उत्तर

9

शायद आप "setCustomView" नामक एक्शनमोड क्लास में विधि का उपयोग करना चाहते हैं।

तो कुछ इस तरह:

newItem.setOnMenuItemClickListener(new OnMenuItemClickListener() { 
     @Override 
     public boolean onMenuItemClick(MenuItem item) { 
      actionMode = startActionMode(new MyAction(ListEditor.this)); 
      actionMode.setCustomView(customNav); 
      return true; 
     } 
    }); 
संबंधित मुद्दे