क्या Google उदाहरणों की तरह गणना के साथ एक्शन बार अधिसूचना आइकन दिखाने के लिए एक एंड्रॉइड मानक बैज या विधि है?
यदि नहीं, तो इसे बनाने का सबसे अच्छा तरीका क्या है?
मैं Android के लिए नया हूँ, कृपया मदद करें।
क्या Google उदाहरणों की तरह गणना के साथ एक्शन बार अधिसूचना आइकन दिखाने के लिए एक एंड्रॉइड मानक बैज या विधि है?
यदि नहीं, तो इसे बनाने का सबसे अच्छा तरीका क्या है?
मैं Android के लिए नया हूँ, कृपया मदद करें।
जवाबों:
मुझे यकीन नहीं है कि यह सबसे अच्छा समाधान है या नहीं, लेकिन यह वही है जो मुझे चाहिए।
कृपया मुझे बताएं कि क्या आप जानते हैं कि बेहतर प्रदर्शन या गुणवत्ता के लिए क्या बदलने की आवश्यकता है। मेरे मामले में, मेरे पास एक बटन है।
मेरे मेनू पर कस्टम आइटम - main.xml
<item
android:id="@+id/badge"
android:actionLayout="@layout/feed_update_count"
android:icon="@drawable/shape_notification"
android:showAsAction="always">
</item>
कस्टम आकार drawable (पृष्ठभूमि वर्ग) - shape_notification.xml
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<stroke android:color="#22000000" android:width="2dp"/>
<corners android:radius="5dp" />
<solid android:color="#CC0001"/>
</shape>
मेरे विचार के लिए लेआउट - feed_update_count.xml
<?xml version="1.0" encoding="utf-8"?>
<Button xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/notif_count"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="32dp"
android:minHeight="32dp"
android:background="@drawable/shape_notification"
android:text="0"
android:textSize="16sp"
android:textColor="@android:color/white"
android:gravity="center"
android:padding="2dp"
android:singleLine="true">
</Button>
MainActivity - मेरे विचार को सेट करना और अपडेट करना
static Button notifCount;
static int mNotifCount = 0;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.main, menu);
View count = menu.findItem(R.id.badge).getActionView();
notifCount = (Button) count.findViewById(R.id.notif_count);
notifCount.setText(String.valueOf(mNotifCount));
return super.onCreateOptionsMenu(menu);
}
private void setNotifCount(int count){
mNotifCount = count;
invalidateOptionsMenu();
}
MenuItem item = menu.findItem(R.id.badge); MenuItemCompat.setActionView(item, R.layout.feed_update_count); notifCount = (Button) MenuItemCompat.getActionView(item);
android:icon="..."
मेनू आइटम XML में ज़रूरत नहीं है । android:actionLayout="..."
वहाँ पर्याप्त है। के लिए Button
लेआउट एक्सएमएल में, आप कर सकते हैं स्वतः बंद होने वाले टैग का उपयोग <Button ... />
क्योंकि टैग सामग्री नहीं हो सकता। आपको <shape>
टैग को बंद करने की आवश्यकता है (फिर से: आत्म-समापन)। और अगर आप की जरूरत नहीं है invalidateOptionsMenu()
। मेरे लिए, वह भी काम नहीं करता है, क्योंकि बैज को हमेशा एक्सएमएल से फिर से फुलाया जाता है। तो, पूरा setNotifCount(...)
बेकार है। बस setText(...)
बिल्ला को बुलाओ । और तुम डाल सकता getActionView()
करने के लिए Button
सीधे।
संपादित समर्थन पुस्तकालय के 26 संस्करण के बाद से (या androidx) आप एक कस्टम को लागू करने की आवश्यकता नहीं OnLongClickListener
टूलटिप प्रदर्शित करने के लिए। बस इसे कॉल करें:
TooltipCompat.setTooltipText(menu_hotlist, getString(R.string.hint_show_hot_message));
अगर कोई ऐसा कुछ चाहता है तो मैं सिर्फ अपना कोड साझा करूंगा:
लेआउट / मेनू / menu_actionbar.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
...
<item android:id="@+id/menu_hotlist"
android:actionLayout="@layout/action_bar_notifitcation_icon"
android:showAsAction="always"
android:icon="@drawable/ic_bell"
android:title="@string/hotlist" />
...
</menu>
लेआउट / action_bar_notifitcation_icon.xml
नोट शैली और Android: क्लिक करने योग्य गुण। ये लेआउट को एक बटन के आकार का बनाते हैं और स्पर्श करने पर पृष्ठभूमि को ग्रे बनाते हैं।
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:orientation="vertical"
android:gravity="center"
android:layout_gravity="center"
android:clickable="true"
style="@android:style/Widget.ActionButton">
<ImageView
android:id="@+id/hotlist_bell"
android:src="@drawable/ic_bell"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:layout_margin="0dp"
android:contentDescription="bell"
/>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/hotlist_hot"
android:layout_width="wrap_content"
android:minWidth="17sp"
android:textSize="12sp"
android:textColor="#ffffffff"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@null"
android:layout_alignTop="@id/hotlist_bell"
android:layout_alignRight="@id/hotlist_bell"
android:layout_marginRight="0dp"
android:layout_marginTop="3dp"
android:paddingBottom="1dp"
android:paddingRight="4dp"
android:paddingLeft="4dp"
android:background="@drawable/rounded_square"/>
</RelativeLayout>
drawable-xhdpi / ic_bell.png
64x64 पिक्सेल की छवि जिसमें चारों ओर से 10 पिक्सेल चौड़ी गद्दी है। आपके पास 8 पिक्सेल चौड़ी गद्दी होनी चाहिए, लेकिन मुझे लगता है कि अधिकांश डिफ़ॉल्ट आइटम उससे थोड़े छोटे हैं। बेशक, आप विभिन्न घनत्वों के लिए विभिन्न आकारों का उपयोग करना चाहते हैं।
drawable / rounded_square.xml
यहाँ, # ff222222 (अल्फा #ff के साथ रंग # 222222 (पूरी तरह से दिखाई देने वाला)) मेरे एक्शन बार का बैकग्राउंड कलर है।
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="2dp" />
<solid android:color="#ffff0000" />
<stroke android:color="#ff222222" android:width="2dp"/>
</shape>
com / ubergeek42 / WeechatAndroid / WeechatActivity.java
यहाँ हम इसे क्लिक करने योग्य और अद्यतन करने योग्य बनाते हैं! मैंने एक अमूर्त श्रोता तैयार किया जो ऑनलॉन्गक्लिक पर टोस्ट निर्माण प्रदान करता है, कोड एक्शनबेरलॉक के स्रोतों से लिया गया था ।
private int hot_number = 0;
private TextView ui_hot = null;
@Override public boolean onCreateOptionsMenu(final Menu menu) {
MenuInflater menuInflater = getSupportMenuInflater();
menuInflater.inflate(R.menu.menu_actionbar, menu);
final View menu_hotlist = menu.findItem(R.id.menu_hotlist).getActionView();
ui_hot = (TextView) menu_hotlist.findViewById(R.id.hotlist_hot);
updateHotCount(hot_number);
new MyMenuItemStuffListener(menu_hotlist, "Show hot message") {
@Override
public void onClick(View v) {
onHotlistSelected();
}
};
return super.onCreateOptionsMenu(menu);
}
// call the updating code on the main thread,
// so we can call this asynchronously
public void updateHotCount(final int new_hot_number) {
hot_number = new_hot_number;
if (ui_hot == null) return;
runOnUiThread(new Runnable() {
@Override
public void run() {
if (new_hot_number == 0)
ui_hot.setVisibility(View.INVISIBLE);
else {
ui_hot.setVisibility(View.VISIBLE);
ui_hot.setText(Integer.toString(new_hot_number));
}
}
});
}
static abstract class MyMenuItemStuffListener implements View.OnClickListener, View.OnLongClickListener {
private String hint;
private View view;
MyMenuItemStuffListener(View view, String hint) {
this.view = view;
this.hint = hint;
view.setOnClickListener(this);
view.setOnLongClickListener(this);
}
@Override abstract public void onClick(View v);
@Override public boolean onLongClick(View v) {
final int[] screenPos = new int[2];
final Rect displayFrame = new Rect();
view.getLocationOnScreen(screenPos);
view.getWindowVisibleDisplayFrame(displayFrame);
final Context context = view.getContext();
final int width = view.getWidth();
final int height = view.getHeight();
final int midy = screenPos[1] + height / 2;
final int screenWidth = context.getResources().getDisplayMetrics().widthPixels;
Toast cheatSheet = Toast.makeText(context, hint, Toast.LENGTH_SHORT);
if (midy < displayFrame.height()) {
cheatSheet.setGravity(Gravity.TOP | Gravity.RIGHT,
screenWidth - screenPos[0] - width / 2, height);
} else {
cheatSheet.setGravity(Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, height);
}
cheatSheet.show();
return true;
}
}
app:actionLayout="@layout/action_bar_notifitcation_icon"
, android:actionLayout="@layout/action_bar_notifitcation_icon"
तो आपको इसके बजाय रखना होगा । एपीआई स्तर <11. के साथ संगत नहीं हैMenuItemCompat.getActionView
menu.findItem(R.id.menu_hotlist).getActionView();
MenuItem.getActionView
android:actionLayout
:; AppCompat: app:actionLayout
आपके मेनू आइटम में।
बस जोड़ना है। यदि कोई भरे हुए सर्कल बबल को लागू करना चाहता है, तो कोड को नाम दिया गया है (इसे नाम दें bage_circle.xml
):
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="ring"
android:useLevel="false"
android:thickness="9dp"
android:innerRadius="0dp"
>
<solid
android:color="#F00"
/>
<stroke
android:width="1dip"
android:color="#FFF" />
<padding
android:top="2dp"
android:bottom="2dp"/>
</shape>
आपको अपनी आवश्यकता के अनुसार मोटाई को समायोजित करना पड़ सकता है।
संपादित करें:
यहां बटन के लिए लेआउट है (इसे नाम दें badge_layout.xml
):
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<com.joanzapata.iconify.widget.IconButton
android:layout_width="44dp"
android:layout_height="44dp"
android:textSize="24sp"
android:textColor="@color/white"
android:background="@drawable/action_bar_icon_bg"
android:id="@+id/badge_icon_button"/>
<TextView
android:id="@+id/badge_textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/badge_icon_button"
android:layout_alignRight="@id/badge_icon_button"
android:layout_alignEnd="@id/badge_icon_button"
android:text="10"
android:paddingEnd="8dp"
android:paddingRight="8dp"
android:paddingLeft="8dp"
android:gravity="center"
android:textColor="#FFF"
android:textSize="11sp"
android:background="@drawable/badge_circle"/>
</RelativeLayout>
मेनू में आइटम बनाएं:
<item
android:id="@+id/menu_messages"
android:showAsAction="always"
android:actionLayout="@layout/badge_layout"/>
में onCreateOptionsMenu
मेनू आइटम करने के लिए मिलता संदर्भ:
itemMessages = menu.findItem(R.id.menu_messages);
badgeLayout = (RelativeLayout) itemMessages.getActionView();
itemMessagesBadgeTextView = (TextView) badgeLayout.findViewById(R.id.badge_textView);
itemMessagesBadgeTextView.setVisibility(View.GONE); // initially hidden
iconButtonMessages = (IconButton) badgeLayout.findViewById(R.id.badge_icon_button);
iconButtonMessages.setText("{fa-envelope}");
iconButtonMessages.setTextColor(getResources().getColor(R.color.action_bar_icon_color_disabled));
iconButtonMessages.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (HJSession.getSession().getSessionId() != null) {
Intent intent = new Intent(getThis(), HJActivityMessagesContexts.class);
startActivityForResult(intent, HJRequestCodes.kHJRequestCodeActivityMessages.ordinal());
} else {
showLoginActivity();
}
}
});
संदेशों के लिए सूचना प्राप्त करने के बाद, गिनती सेट करें:
itemMessagesBadgeTextView.setText("" + count);
itemMessagesBadgeTextView.setVisibility(View.VISIBLE);
iconButtonMessages.setTextColor(getResources().getColor(R.color.white));
यह कोड Iconify-fontawesome का उपयोग करता है ।
compile 'com.joanzapata.iconify:android-iconify-fontawesome:2.1.+'
मुझे ActionView
आधारित समाधान पसंद नहीं हैं, मेरा विचार है:
TextView
, जो कि TextView
एप्लिकेशन द्वारा पॉप्युलेट किया जाएगाजब आपको एक ड्रॉ करने की आवश्यकता होती है MenuItem
:
2.1। फुलाया लेआउट
2.2। कॉल measure()
& layout()
(अन्यथा view
0px x 0px होगा, यह अधिकांश उपयोग के मामलों के लिए बहुत छोटा है)
2.3। TextView
पाठ सेट करें
2.4। दृश्य का "स्क्रीनशॉट" बनाएं
2.6। MenuItem
2.4 पर बनाए गए बिटमैप के आधार पर सेट आइकन
फायदा!
इसलिए, परिणाम कुछ ऐसा होना चाहिए
<?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/counterPanel" android:layout_width="32dp" android:layout_height="32dp" android:background="@drawable/ic_menu_gallery"> <RelativeLayout android:id="@+id/counterValuePanel" android:layout_width="wrap_content" android:layout_height="wrap_content" > <ImageView android:id="@+id/counterBackground" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/unread_background" /> <TextView android:id="@+id/count" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="1" android:textSize="8sp" android:layout_centerInParent="true" android:textColor="#FFFFFF" /> </RelativeLayout> </FrameLayout>
@drawable/unread_background
यह हरे रंग TextView
की पृष्ठभूमि है,
@drawable/ic_menu_gallery
वास्तव में यहाँ की आवश्यकता नहीं है, यह सिर्फ आईडीई में लेआउट के परिणाम का पूर्वावलोकन करने के लिए है।
में कोड जोड़ें onCreateOptionsMenu
/onPrepareOptionsMenu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);
MenuItem menuItem = menu.findItem(R.id.testAction);
menuItem.setIcon(buildCounterDrawable(count, R.drawable.ic_menu_gallery));
return true;
}
बिल्ड-द-आइकन विधि लागू करें:
private Drawable buildCounterDrawable(int count, int backgroundImageId) {
LayoutInflater inflater = LayoutInflater.from(this);
View view = inflater.inflate(R.layout.counter_menuitem_layout, null);
view.setBackgroundResource(backgroundImageId);
if (count == 0) {
View counterTextPanel = view.findViewById(R.id.counterValuePanel);
counterTextPanel.setVisibility(View.GONE);
} else {
TextView textView = (TextView) view.findViewById(R.id.count);
textView.setText("" + count);
}
view.measure(
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED),
View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED));
view.layout(0, 0, view.getMeasuredWidth(), view.getMeasuredHeight());
view.setDrawingCacheEnabled(true);
view.setDrawingCacheQuality(View.DRAWING_CACHE_QUALITY_HIGH);
Bitmap bitmap = Bitmap.createBitmap(view.getDrawingCache());
view.setDrawingCacheEnabled(false);
return new BitmapDrawable(getResources(), bitmap);
}
पूरा कोड यहाँ है: https://github.com/cvoronin/ActionBarMenuItemCounter
ठीक है, के लिए @AndrewS साथ काम करने के लिए समाधान v7 appCompat पुस्तकालय :
<menu
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:someNamespace="http://schemas.android.com/apk/res-auto" >
<item
android:id="@+id/saved_badge"
someNamespace:showAsAction="always"
android:icon="@drawable/shape_notification" />
</menu>
।
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
menu.clear();
inflater.inflate(R.menu.main, menu);
MenuItem item = menu.findItem(R.id.saved_badge);
MenuItemCompat.setActionView(item, R.layout.feed_update_count);
View view = MenuItemCompat.getActionView(item);
notifCount = (Button)view.findViewById(R.id.notif_count);
notifCount.setText(String.valueOf(mNotifCount));
}
private void setNotifCount(int count){
mNotifCount = count;
supportInvalidateOptionsMenu();
}
बाकी कोड समान है।
android:actionLayout
, app:actionLayout
यह आकर्षण की तरह काम करता है।
इन प्रश्नों के उत्तरों को देखने का प्रयास करें, विशेष रूप से दूसरा जो नमूना कोड है:
एंड्रॉइड में मेनू आइटम पर गतिशील मूल्यों को कैसे लागू किया जाए
एक्शनबार आइकन पर टेक्स्ट कैसे प्राप्त करें?
मैं जो देखता हूं, उससे आपको अपना स्वयं का कस्टम ActionView
कार्यान्वयन बनाने की आवश्यकता होगी । एक विकल्प एक रिवाज हो सकता है Drawable
। ध्यान दें कि एक्शन बार के लिए अधिसूचना गणना का कोई मूल कार्यान्वयन नहीं प्रतीत होता है।
संपादित करें: आप जिस उत्तर की तलाश कर रहे थे, कोड के साथ: नमूना कार्यान्वयन के साथ कस्टम अधिसूचना दृश्य
Drawable
निम्नलिखित दो लिंक्स में देखे गए अनुसार टेक्स्ट डाल सकते हैं : stackoverflow.com/questions/6691818/… और stackoverflow.com/questions/3972445/…
Drawable
लिंक जैसी किसी चीज़ के लिए कस्टम XML विशेषताएँ बनाने में सक्षम हो सकते हैं और फिर अपने कस्टम के लिए एक विशेषता Drawable
बना सकते हैं, जिसके ऊपर पाठ हो ताकि आप पूरी चीज़ बना सकें XML में और अपनी इच्छानुसार इसे फिट करें। वैकल्पिक रूप से, यदि आप यह बहुत कठिन है, तो आप जावा में ड्राबल को जोड़ सकते हैं।
जब आप टूलबार का उपयोग करते हैं:
....
private void InitToolbar() {
toolbar = (Toolbar) findViewById(R.id.my_awesome_toolbar);
toolbartitle = (TextView) findViewById(R.id.titletool);
toolbar.inflateMenu(R.menu.show_post);
toolbar.setOnMenuItemClickListener(this);
Menu menu = toolbar.getMenu();
MenuItem menu_comments = menu.findItem(R.id.action_comments);
MenuItemCompat
.setActionView(menu_comments, R.layout.menu_commentscount);
View v = MenuItemCompat.getActionView(menu_comments);
v.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// Your Action
}
});
comment_count = (TextView) v.findViewById(R.id.count);
}
और अपने लोड डेटा कॉल में ताज़ा करें ():
private void refreshMenu() {
comment_count.setVisibility(View.VISIBLE);
comment_count.setText("" + post_data.getComment_count());
}
मुझे यहां एक बहुत अच्छा समाधान मिला , मैं इसे कोटलिन के साथ उपयोग कर रहा हूं।
सबसे पहले, ड्रा करने योग्य फ़ोल्डर में आपको बनाना होगा item_count.xml
:
<?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="8dp" />
<solid android:color="#f20000" />
<stroke
android:width="2dip"
android:color="#FFF" />
<padding
android:bottom="5dp"
android:left="5dp"
android:right="5dp"
android:top="5dp" />
</shape>
आपके Activity_Main
लेआउट में कुछ इस तरह हैं:
<RelativeLayout
android:id="@+id/badgeLayout"
android:layout_width="40dp"
android:layout_height="40dp"
android:layout_toRightOf="@+id/badge_layout1"
android:layout_gravity="end|center_vertical"
android:layout_marginEnd="5dp">
<RelativeLayout
android:id="@+id/relative_layout1"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<Button
android:id="@+id/btnBadge"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/ic_notification" />
</RelativeLayout>
<TextView
android:id="@+id/txtBadge"
android:layout_width="18dp"
android:layout_height="18dp"
android:layout_alignRight="@id/relative_layout1"
android:background="@drawable/item_count"
android:text="22"
android:textColor="#FFF"
android:textSize="7sp"
android:textStyle="bold"
android:gravity="center"/>
</RelativeLayout>
और आप की तरह संशोधित कर सकते हैं:
btnBadge.setOnClickListener { view ->
Snackbar.make(view,"badge click", Snackbar.LENGTH_LONG) .setAction("Action", null).show()
txtBadge.text = "0"
}
मुझे इसे करने का बेहतर तरीका मिला। अगर आप कुछ इस तरह का उपयोग करना चाहते हैं
इस निर्भरता का उपयोग करें
compile 'com.nex3z:notification-badge:0.1.0'
ड्रा करने योग्य में एक xml फ़ाइल बनाएं और इसे बैज.xml के रूप में सहेजें
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<shape android:shape="oval">
<solid android:color="#66000000"/>
<size android:width="30dp" android:height="40dp"/>
</shape>
</item>
<item android:bottom="1dp" android:right="0.6dp">
<shape android:shape="oval">
<solid android:color="@color/Error_color"/>
<size android:width="20dp" android:height="20dp"/>
</shape>
</item>
</layer-list>
अब जहाँ भी आप उस बैज का उपयोग xml में कोड का उपयोग करना चाहते हैं। इसकी मदद से आप अपनी छवि या किसी भी चीज़ के ऊपरी-दाएँ कोने पर उस बैज को देख पाएंगे।
<com.nex3z.notificationbadge.NotificationBadge
android:id="@+id/badge"
android:layout_toRightOf="@id/Your_ICON/IMAGE"
android:layout_alignTop="@id/Your_ICON/IMAGE"
android:layout_marginLeft="-16dp"
android:layout_marginTop="-8dp"
android:layout_width="28dp"
android:layout_height="28dp"
app:badgeBackground="@drawable/Badge"
app:maxTextLength="2"
></com.nex3z.notificationbadge.NotificationBadge>
अब अंत में yourFile.java पर इस 2 सरल चीज़ का उपयोग करें .. 1) परिभाषित करें
NotificationBadge mBadge;
2) जहां आपका लूप या कुछ भी जो इस संख्या की गिनती कर रहा है, उसका उपयोग करें:
mBadge.setNumber(your_LoopCount);
यहाँ, mBadge.setNumber(0)
कुछ भी नहीं दिखाएगा।
उममीद है कि इससे मदद मिलेगी।