Vraag Android - schaduw op tekst?


Ik vraag me af hoe schaduw op tekst in Android te voegen?

Ik heb de volgende code die op een bitmap is toegepast en ik wilde worden overschaduwd ...

paint.setColor(Color.BLACK);
paint.setTextSize(55);
paint.setFakeBoldText(false);
paint.setShadowLayer(1, 0, 0, Color.BLACK); //This only shadows my whole view...

Dankbaar voor alle tips!


160
2018-03-21 11:51


oorsprong


antwoorden:


Je zou in staat moeten zijn om de stijl toe te voegen, zoals deze (ontleend aan de broncode van Ringdroid):

  <style name="AudioFileInfoOverlayText">
    <item name="android:paddingLeft">4px</item>
    <item name="android:paddingBottom">4px</item>
    <item name="android:textColor">#ffffffff</item>
    <item name="android:textSize">12sp</item>
    <item name="android:shadowColor">#000000</item>
    <item name="android:shadowDx">1</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">1</item>
  </style>

En gebruik in je lay-out de stijl als volgt:

 <TextView android:id="@+id/info"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       style="@style/AudioFileInfoOverlayText"
       android:gravity="center" />

Bewerken: de broncode kan hier bekeken worden: https://github.com/google/ringdroid

Edit2: Om deze stijl programmatisch in te stellen, zou je zoiets doen (aangepast van dit voorbeeld om de bronnen van ringdroid van boven af ​​te stemmen)

TextView infoTextView = (TextView) findViewById(R.id.info);
infoTextView.setTextAppearance(getApplicationContext(),  
       R.style.AudioFileInfoOverlayText);

De handtekening voor setTextAppearance is

public void setTextAppearance (Context context, int resid)

Sinds: API Level 1
  Stelt de tekstkleur, -grootte, -stijl, hintkleur en   markeer kleur uit de opgegeven TextAppearance-resource.


353
2018-03-21 14:06



Je kunt beide doen in code en XML. Slechts 4 basisdingen die moeten worden ingesteld.

  1. schaduw kleur
  2. Schaduw Dx - dit specificeert de X-as offset van schaduw. Je kunt - / + waarden geven, waarbij -Dx een schaduw tekent aan de linkerkant van de tekst en + Dx aan de rechterkant
  3. schaduw Dy - specificeert de Y-as offset van schaduw. - Geef een schaduw op boven de tekst en + Dy geeft onder de tekst aan.
  4. schaduwstraal - geeft aan hoeveel de schaduw aan de randen moet vervagen. Geef een kleine waarde als schaduw prominent moet zijn. Anders anders.

bijv.

    android:shadowColor="@color/text_shadow_color"
    android:shadowDx="-2"
    android:shadowDy="2"
    android:shadowRadius="0.01"

Dit tekent een prominente schaduw aan de linkerkant-onderkant van de tekst. In code kun je zoiets als dit toevoegen;

    TextView item = new TextView(getApplicationContext());
    item.setText(R.string.text);
    item.setTextColor(getResources().getColor(R.color.general_text_color));
    item.setShadowLayer(0.01f, -2, 2,   getResources().getColor(R.color.text_shadow_color));

61
2018-04-22 22:21



Als u een schaduw wilt bereiken zoals die van Android in de Launcher, beheren we deze waarden. Ze zijn handig als u TextViews wilt maken die als een widget worden weergegeven, zonder achtergrond.

android:shadowColor="#94000000"
android:shadowDy="2"
android:shadowRadius="4"

2
2018-04-03 10:51



Teken 2 teksten: één grijs (het wordt de schaduw) en teken daarboven de tweede tekst (y-coördinaat 1 px meer dan schaduwtekst).


1
2018-03-21 13:55



 <style name="WhiteTextWithShadow" parent="@android:style/TextAppearance">
    <item name="android:shadowDx">1</item>
    <item name="android:shadowDy">1</item>
    <item name="android:shadowRadius">1</item>
    <item name="android:shadowColor">@android:color/black</item>
    <item name="android:textColor">@android:color/white</item>
</style>

gebruik dan als

 <TextView
            android:id="@+id/text"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:textSize="15sp"
            tools:text="Today, May 21"
            style="@style/WhiteTextWithShadow"/>

0
2017-12-06 15:43