एंड्रॉइड में TextView पर टेक्स्ट शैडो लागू करना
यह ट्यूटोरियल XML और प्रोग्रामेटिकली दोनों तरीकों से टेक्स्ट पर शैडो इफेक्ट जोड़ने को कवर करता है।
विधि 1: XML एट्रिब्यूट्स (सबसे सरल)
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="नमस्ते दुनिया!"
android:textSize="48sp"
android:textStyle="bold|italic"
android:textColor="#FF00FF"
android:shadowColor="#0000FF"
android:shadowDx="4"
android:shadowDy="4"
android:shadowRadius="2" />
XML एट्रिब्यूट्स समझाए गए:
| एट्रिब्यूट | विवरण |
|---|---|
android:shadowColor |
शैडो का रंग (हेक्स या कलर रिसोर्स) |
android:shadowDx |
क्षैतिज ऑफसेट (पिक्सेल में) |
android:shadowDy |
लंबवत ऑफसेट (पिक्सेल में) |
android:shadowRadius |
ब्लर रेडियस (0 = शार्प शैडो) |
विधि 2: प्रोग्रामेटिकली (Java/Kotlin)
import android.graphics.Color;
import android.os.Bundle;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.textView);
// setTextColor और setShadowLayer का उपयोग
textView.setTextColor(Color.MAGENTA);
// पैरामीटर्स: radius, dx, dy, shadowColor
textView.setShadowLayer(8f, 6f, 6f, Color.BLUE);
// शैडो हटाने के लिए:
// textView.setShadowLayer(0, 0, 0, Color.TRANSPARENT);
}
}
विधि 3: SpannableString के साथ विशिष्ट टेक्स्ट पर शैडो
import android.graphics.Color;
import android.text.SpannableString;
import android.text.style.ShadowSpan;
SpannableString spannable = new SpannableString("शैडो वाला टेक्स्ट सामान्य टेक्स्ट");
// केवल पहले 8 कैरेक्टर्स पर शैडो
spannable.setSpan(new ShadowSpan(4f, 3f, 3f, Color.RED), 0, 8, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
textView.setText(spannable);
उन्नत इफेक्ट्स
मल्टीपल शैडो (लेयर-लिस्ट के माध्यम से)
TextView सीधे मल्टीपल शैडो सपोर्ट नहीं करता, लेकिन लेयर-लिस्ट बैकग्राउंड का उपयोग कर सकते हैं:
<!-- res/drawable/text_shadow_bg.xml -->
<layer-list xmlns:android="https://schemas.android.com/apk/res/android">
<!-- शैडो लेयर -->
<item android:left="2dp" android:top="2dp">
<shape>
<solid android:color="#80000000" />
<corners android:radius="4dp" />
</shape>
</item>
<!-- मुख्य टेक्स्ट लेयर -->
<item android:bottom="2dp" android:right="2dp">
<shape>
<solid android:color="@android:color/transparent" />
</shape>
</item>
</layer-list>
निऑन/ग्लो इफेक्ट
// निऑन ग्लो इफेक्ट textView.setTextColor(Color.CYAN); textView.setShadowLayer(10f, 0f, 0f, Color.CYAN); textView.setShadowLayer(20f, 0f, 0f, Color.BLUE); // लेयर नहीं होगा, अंतिम जीतता है // समाधान: कस्टम व्यू या Canvas ड्राइंग का उपयोग करें
Kotlin एक्सटेंशन फंक्शन
fun TextView.applyShadow(
radius: Float = 4f,
dx: Float = 2f,
dy: Float = 2f,
color: Int = Color.BLACK
) {
setShadowLayer(radius, dx, dy, color)
}
// उपयोग:
textView.applyShadow(radius = 8f, dx = 4f, dy = 4f, color = Color.BLUE)
सामान्य उपयोग के मामले
- पठनीयता में सुधार (विशेषकर इमेज बैकग्राउंड पर)
- विजुअल हायरार्की बनाना
- बटन/लेबल पर जोर देना
- निऑन/रेट्रो स्टाइल UI
पैरामीटर गाइड
- Radius 0-2: शार्प, कुरकुरा शैडो
- Radius 3-6: नरम, प्राकृतिक शैडो
- Radius 8+: डिफ्यूज, ग्लो जैसा इफेक्ट
- Dx/Dy पॉजिटिव: नीचे-दाएं शैडो
- Dx/Dy नेगेटिव: ऊपर-बाएं शैडो