2013-02-19 40 views
20

0 के "पूर्ण" बटन को हटाएं। मैं अपने ऐप पर startActionMode (ActionMode) का उपयोग कर रहा हूं।एक्शनमोड

डिफ़ॉल्ट रूप से यह बार पर "पूर्ण" बटन जोड़ता है, मैं इसे हटाना चाहता हूं।

इसके अलावा, अगर इसके पाठ को बदलने का कोई तरीका है, तो मैं भी जानना चाहता हूं, "पूर्ण" से अलग विवरण का कारण यह हो सकता है कि यह क्रिया उसके व्यवहार के अनुरूप हो।

+0

एक तस्वीर प्रदान करने से आप यह स्पष्ट कर सकते हैं कि आप किस बारे में बात कर रहे हैं। – JoxTraex

+2

IMHO, जो आप चाहते हैं वह अमान्य डिज़ाइन है। परिभाषा के अनुसार, उपयोगकर्ता कार्रवाई मोड को खारिज कर सकता है, जैसे बैक बटन दबाकर। एक क्रिया मोड डिफ़ॉल्ट रूप से विनाशकारी होना चाहिए: एक क्रिया मोड को सक्रिय करना, फिर बैक (या पूर्ण टैप करना) दबाकर उपयोगकर्ता के डेटा में कोई परिवर्तन नहीं होना चाहिए। – CommonsWare

+0

हम्म .. यह भी सच है। तो इसे पाठ बदलने का एक तरीका है ताकि उपयोगकर्ता भ्रमित न हो? कारण कभी-कभी "रद्द करें" "पूर्ण" से बेहतर विवरण है। Ty! –

उत्तर

1

यहां तक ​​कि मैं एक ही साथ फंस गया था और मैं इसे हल करने के लिए इस तरह से मिल गया।

int doneButtonId = Resources.getSystem().getIdentifier("action_mode_close_button", "id", "android"); 
LinearLayout layout = (LinearLayout) findViewById(doneButtonId); 
TextView doneview = (TextView) layout.getChildAt(1); 
doneview.setText(""); 

आशा है कि इससे मदद मिलती है !!

+10

यह एक अविश्वसनीय समाधान है, क्योंकि यह कार्यान्वयन विवरण मानता है जो परिवर्तन के अधीन हैं। – CommonsWare

+1

काम नहीं कर रहा मैंने कोशिश की कि मुझे शून्य सूचक अपवाद मिल रहा है, मुझे इस विधि को कब कॉल करना चाहिए, मैं खंड –

+0

का उपयोग कर रहा हूं यदि आप टैबलेट डिवाइस – MohammadReza

43

मैं @ कॉमन्सवेयर से सहमत हूं कि को बटन को छुपाने के लिए यह अमान्य डिज़ाइन है।

हालांकि, ऐसे ग्राहक हैं जो इस बटन को हटाना चाहते हैं और मैं समझ सकता हूं कि चेकमार्क उपयोगकर्ताओं को भ्रम पैदा कर सकता है क्योंकि यह वास्तव में कुछ मामलों में कुछ भी नहीं करता है।

<style name="AppTheme" parent="android:Theme.Holo"> 
    <item name="android:actionModeCloseButtonStyle">@style/NoCloseButton</item> 
</style> 

<style name="NoCloseButton" parent="@android:style/Widget.ActionButton.CloseMode"> 
    <item name="android:visibility">gone</item> 
</style> 
+1

मेरे लिए काम नहीं करता है! क्या यह आईसीएस के रूप में मान्य है? – rupps

+0

एपीआई 11+ के लिए महान समाधान लेकिन क्या एपीआई 8+ में ऐसा करने का कोई तरीका है?मैं ActionBarSherlok का उपयोग करने के लिए इसे छिपाने का एक तरीका है? ActionModeCloseButtonStyle को API 11+ – Cilenco

+3

@Cilenco की आवश्यकता है: 'actionModeCloseButtonStyle' (' android: 'के बिना) एबीएस के लिए काम करना चाहिए। –

2

आप ActionBarSherlock आप इस शैली के साथ "पूर्ण" बटन को छुपा सकते हैं उपयोग कर रहे हैं:

<resources xmlns:android="http://schemas.android.com/apk/res/android"> 
    <style name="NoCloseButton" parent="@style/Widget.Sherlock.ActionButton.CloseMode"> 
     <item name="android:visibility">gone</item> 
    </style> 

    <style name="AppBaseTheme" parent="Theme.Sherlock.Light.DarkActionBar"> 
     <item name="actionModeCloseButtonStyle">@style/NoCloseButton</item> 
    </style> 

    <!-- Application theme. --> 
    <style name="AppTheme" parent="AppBaseTheme"> 

    </style> 
</resources> 

कृपया सुनिश्चित करें कि

तो, यहाँ शैलियों के साथ बटन को निकालने का तरीका है इस शैली को प्रत्येक शैली निर्देशिका (मान, मूल्य-v11, मान-v14) में डालने के लिए। उसके बाद आप इस कोड के साथ एक कस्टम मेनू बना सकते हैं:

LayoutInflater inflater = LayoutInflater.from(getSherlockActivity()); 
View actionView = inflater.inflate(R.layout.actionmode, null); 

ActionMode am = getSherlockActivity().startActionMode(mActionModeCallback); 
am.setCustomView(actionView); 
+1

लेकिन यहां एक्शन व्यू पूरी स्क्रीन चौड़ाई पर कब्जा नहीं कर रहा है। – sandeepmaaram

+1

हां। लेकिन यहां एक्शन व्यू पूरी स्क्रीन चौड़ाई पर कब्जा नहीं कर रहा है –

+0

कोई भी स्क्रीन चौड़ाई समाधान ढूंढता है? –

1

Matthias Robbers के लिए धन्यवाद, यह काम करता है। लेकिन मैं उपयोग करने के लिए "अदृश्य" perfer:

<style name="NoCloseButtonActionModeStyle"> 
    <item name="android:visibility">invisible</item> 
</style> 

तो ActionMode में कस्टम दृश्य स्थिति माता-पिता के लिए नहीं मांगपत्र छोड़ दिया जाएगा।

0

कोई भी स्क्रीन चौड़ाई समाधान ढूंढता है? - मयूर आर अमिपारा जून 5 '15 पर 10:27

अपने कस्टम व्यू के ऑनर को ओवरराइड करें, इसकी चौड़ाई स्क्रीन चौड़ाई पर सेट करें। और ऑनआउट में, अपने बच्चे के विचारों को रिलायआउट करें।

यह मेरे लिए काम करता है।

import android.content.Context; 
import android.util.AttributeSet; 
import android.util.DisplayMetrics; 
import android.view.View; 
import android.widget.RelativeLayout; 

import com.android.gallery3d.R; 

public class SelectActionModeCustomView extends RelativeLayout { 

    private View mLeftButton; 
    private View mRightButton; 

    private int mScreenWidth; 

    private static final String TAG = "SelectActionView"; 

    public SelectActionModeCustomView(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     DisplayMetrics metrics = context.getResources().getDisplayMetrics(); 
     mScreenWidth = metrics.widthPixels; 
    } 

    @Override 
    protected void onFinishInflate() { 
     super.onFinishInflate(); 
     mLeftButton = findViewById(R.id.cancel); 
     mRightButton = findViewById(R.id.select_action); 
    } 

    @Override 
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { 
     super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
     this.setMeasuredDimension(mScreenWidth, this.getMeasuredHeight()); 
    } 

    @Override 
    protected void onLayout(boolean changed, int l, int t, int r, int b) { 
     super.onLayout(changed, l, t, r, b); 
     int childLeft = 0; 
     int childTop = 0; 

     childLeft = 0; 
     childTop = ((b - t) - mLeftButton.getMeasuredHeight())/2; 
     mLeftButton.layout(childLeft, childTop, 
       childLeft + mLeftButton.getMeasuredWidth(), 
       childTop + mLeftButton.getMeasuredHeight()); 

     childLeft = (r - l) - mRightButton.getMeasuredWidth(); 
     childTop = ((b - t) - mRightButton.getMeasuredHeight())/2; 
     mRightButton.layout(childLeft, childTop, 
       childLeft + mRightButton.getMeasuredWidth(), 
       childTop + mRightButton.getMeasuredHeight()); 
    } 


}