안드로이드에서 텍스트에 그림자를 추가하는 방법이 궁금합니다.
비트 맵에 적용되는 다음 코드가 있으며 음영 처리를 원했습니다 …
paint.setColor(Color.BLACK);
paint.setTextSize(55);
paint.setFakeBoldText(false);
paint.setShadowLayer(1, 0, 0, Color.BLACK); //This only shadows my whole view...
답변
다음과 같이 스타일을 추가 할 수 있어야합니다 (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>
그리고 레이아웃에서 다음과 같은 스타일을 사용하십시오.
<TextView android:id="@+id/info"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
style="@style/AudioFileInfoOverlayText"
android:gravity="center" />
편집 : 소스 코드는 여기에서 볼 수 있습니다 : https://github.com/google/ringdroid
Edit2 :이 스타일을 프로그래밍 방식으로 설정하려면 다음과 같이하십시오 ( 위의 ringdroid의 리소스와 일치하도록 이 예제 에서 수정 됨 )
TextView infoTextView = (TextView) findViewById(R.id.info);
infoTextView.setTextAppearance(getApplicationContext(),
R.style.AudioFileInfoOverlayText);
의 서명 setTextAppearance
은
공공 무효 setTextAppearance (컨텍스트 컨텍스트, int resid)
API 레벨 1
지정된 TextAppearance 자원에서 텍스트 색상, 크기, 스타일, 힌트 색상 및 강조 표시 색상을 설정합니다.
답변
코드와 XML 모두에서 할 수 있습니다. 4 가지 기본 사항 만 설정해야합니다.
- 그림자 색
- Shadow Dx-그림자의 X 축 오프셋을 지정합니다. -/ + 값을 지정할 수 있습니다. 여기서 -Dx는 텍스트 왼쪽에 그림자를, 오른쪽에 + Dx를 그립니다
- shadow Dy-그림자의 Y 축 오프셋을 지정합니다. -Dy는 텍스트 위에 그림자를 지정하고 + Dy는 텍스트 아래에 그림자를 지정합니다.
- 그림자 반경-그림자가 가장자리에서 얼마나 흐려질 지 지정합니다. 그림자를 강조해야하는 경우 작은 값을 제공하십시오. 그렇지 않으면.
예 :
android:shadowColor="@color/text_shadow_color"
android:shadowDx="-2"
android:shadowDy="2"
android:shadowRadius="0.01"
텍스트의 왼쪽 아래에 눈에 띄는 그림자를 그립니다. 코드에서는 다음과 같이 추가 할 수 있습니다.
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));
답변
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" android:padding="20dp" > <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:shadowColor="#000" android:shadowDx="0" android:shadowDy="0" android:shadowRadius="50" android:text="Text Shadow Example1" android:textColor="#FBFBFB" android:textSize="28dp" android:textStyle="bold" /> <TextView android:id="@+id/textview2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:text="Text Shadow Example2" android:textColor="#FBFBFB" android:textSize="28dp" android:textStyle="bold" /> </LinearLayout>
위의 XML 레이아웃 코드에서 textview1은 레이아웃에 그림자 효과가 있습니다. 아래는 구성 항목입니다
android : shadowDx – 그림자의 X 축 오프셋을 지정합니다. -/ + 값을 지정할 수 있습니다. 여기서 -Dx는 텍스트 왼쪽에 그림자를, 오른쪽에 + Dx를 그립니다
android : shadowDy – 그림자의 Y 축 오프셋을 지정합니다. -Dy는 텍스트 위에 그림자를 지정하고 + Dy는 텍스트 아래에 그림자를 지정합니다.
android : shadowRadius – 가장자리에서 그림자를 얼마나 흐리게할지 지정합니다. 그림자가 눈에 띄어 야하는 경우 작은 값을 제공하십시오. android : shadowColor – 그림자 색을 지정합니다
실용적으로 Android TextView의 그림자 효과
아래 코드 스 니펫을 사용하여 두 번째 TextView의 그림자 효과를 실용적으로 얻으십시오.
TextView textv = (TextView) findViewById(R.id.textview2); textv.setShadowLayer(30, 0, 0, Color.RED);
출력 :
답변
실행기에서 Android와 같은 그림자를 얻으려면 이러한 값을 관리합니다. 배경없이 위젯으로 표시되는 TextView를 만들려는 경우 유용합니다.
android:shadowColor="#94000000"
android:shadowDy="2"
android:shadowRadius="4"
답변
두 개의 텍스트를 그립니다 : 하나의 회색 (그림자가 될 것입니다) 그리고 그 위에 두 번째 텍스트를 그립니다 (y는 그림자 텍스트보다 1px 더 많은 좌표).
답변
<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>
다음으로 사용
<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"/>