순환 단추가있는 숫자 키패드처럼 보이는 표 레이아웃이 있습니다 (단추는 둥근 배경이있는 textviews 임). 이제 전체 키패드에 그라디언트를 적용하고 싶습니다. 하지만 그라디언트를 버튼에서만 볼 수 있습니다. 버튼 주위의 공간은 흰색이어야합니다. xml을 통해 그것을 달성 할 수있는 방법이 있습니까?여러보기에 그라디언트 적용
답변
업데이트 : 예, 저는 XML에서 그렇게 할 수있는 방법을 생각할 수 있습니다. 배경 레이아웃에 그라디언트를 설정하십시오. 그런 다음 주위에 흰색 채우기가 필요한 크기의 투명한 원과 각 가장자리 주위에 정의 된 작은 9 개의 패치가있는 9 패치 드로어 블 이미지를 만듭니다 (따라서 원이 늘어나지 않습니다).
TextView 배경을 귀하의 9 패치 및 그리드 셀이 전체 테이블 레이아웃에 맞게 확장되었는지 확인하십시오 (따라서 흰색 에지가 함께 병합됩니다.)
원문 대답 : XML을 사용하는 쉬운 방법은 없을 것입니다. onDraw 메서드를 재정의 할 수 있도록 Drawable 클래스를 확장하는 클래스를 만들어야 할 것입니다. RadialGradient (Drawer가 아닌 Shader)를 만들어야하고 각 단추가 셰이더가 설정된 페인트를 만들면됩니다. 공통 셰이더.
각 단추를 그릴 때 단추의 y 값을보고 캔버스를 -y로 변환 한 다음 셰이더 페인트를 사용하여 y에 원을 그립니다 (canvas.drawCircle (..)). . 그라디언트가 전체 페이지에 걸쳐 그려지는 것처럼 색상 그라디언트가 맵핑 된 상태에서 화면의 같은 위치에 원을 배치해야하지만 버튼 만 볼 수 있습니다.
전체 레이아웃에 배경색을 흰색으로 설정하십시오.
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:state_pressed="true">
<shape>
<gradient
android:startColor="#454545"
android:endColor="#F0F0F0"
android:angle="270"/>
<stroke
android:width="4dp"
android:color="#B5F6EC"/>
<corners
android:radius="0dp" />
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp" />
</shape>
</item>
<item android:state_focused="true">
<shape>
<gradient
android:startColor="#454545"
android:endColor="#F0F0F0"
android:angle="270"/>
<stroke
android:width="4dp"
android:color="#B5F6EC"/>
<corners
android:radius="0dp" />
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp" />
</shape>
</item>
<item android:state_enabled="false">
<shape>
<gradient
android:startColor="#454545"
android:endColor="#F0F0F0"
android:angle="270"/>
<stroke
android:width="4dp"
android:color="#B5F6EC"/>
<corners
android:radius="0dp" />
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp" />
</shape>
</item>
<item>
<shape>
<gradient
android:startColor="#F0F0F0"
android:endColor="#454545"
android:angle="270"/>
<stroke
android:width="0dp"
android:color="#000000"/>
<corners
android:radius="0dp" />
<padding
android:left="0dp"
android:top="0dp"
android:right="0dp"
android:bottom="0dp" />
</shape>
</item>
</selector>
내 자식 심판을 참조하십시오
저장 앱 RES-에 gradiant_button.xml> 당김 폴더
gradiant_button.xml : 그리고 각각의 모든 버튼에 그라데이션을 적용 을 https://github.com/iamsarker/android-apps/tree/master/CustomButton
버튼 xml은
입니다.210<Button
android:id="@+id/btn11"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="3"
android:background="@drawable/gradiant_button"
android:text="@string/btnText" />
감사합니다. Sarker 님, 답변입니다. 하지만 모든 버튼에 그래디언트를 적용하고 싶지 않습니다. 내가 그렇게하면 모든 단추가 똑같이 보일 것입니다. 나는 그것을 원하지 않는다. 내가 무슨 뜻인지 이해한다면. –
은 당신이 원하는 단추에 android : background = "@ drawable/gradiant_button"을 넣었습니다. –
- 1. 요소에 그라디언트 레이어 적용
- 2. CAShapeLayer에 그라디언트 적용
- 3. android의 목록보기에 그라디언트 적용
- 4. 그라디언트 CSS를 배경색 위에 적용
- 5. 티타늄의 창 배경에 그라디언트 색상 적용 문제
- 6. ggplot의 히스토그램에 색상 그라디언트 적용 시도
- 7. 목록 상자에 방사형 그라디언트 효과 적용
- 8. UIImage에 그라디언트 적용 - 색상 반전을 제거하는 방법?
- 9. 여러보기에 대해 단일 ADBannerViewDelegate
- 10. 여러보기에 공유 버튼 추가
- 11. 목록의 여러보기에 부풀기
- 12. 여러보기에 개체 추가
- 13. 데이터를 여러보기에 걸쳐 저장합니다.
- 14. 하나의 애니메이션을 동시에 여러보기에 적용하십시오.
- 15. 여러보기에 대한 사용자 통계 포함
- 16. 여러보기에 쿠키를 설정하는 방법은 무엇입니까?
- 17. GA - 여러보기에 걸친 전자 상거래
- 18. 여러보기에 녹아웃 하위보기 모델 바인딩?
- 19. 반복보기 기능을 여러보기에 포함 시키시겠습니까?
- 20. CSS3 모양 높이 자동 증가, 모양에 그라디언트 적용
- 21. sencha 터치 차트 : 선 채우기에 그라디언트 색상 적용
- 22. C/C++에서 왼쪽에서 오른쪽으로 투명 그라디언트 적용
- 23. Sencha Touch Chart : 막대에 두 개 이상의 그라디언트 적용
- 24. ActionScript 3/Flash를 사용하여 선에 색상 그라디언트 적용
- 25. SKSpriteNode 애니메이션 그라디언트
- 26. JFreeChart의 시리즈 그라디언트 색상
- 27. Firefox 텍스트 그라디언트
- 28. 그라디언트 레이블 그리기
- 29. 그라디언트 적용시 버튼 스트레치
- 30. SVG 애니메이션 그라디언트 중지
답변 해 주셔서 감사합니다. 귀하의 답변은 모두 내 필요에 완벽합니다. 나는 두 번째 방법을 따랐다. 그러나 나는 셰이더를 사용하지 않았다. 테이블 레이아웃 배경에 선형 그래디언트를 적용했습니다. 그리고 나서 textview 클래스를 확장하여 캔버스에 흰색 직사각형을 그리고 투명 페인트를 사용하여 가운데에 원을 그렸습니다. 그럼, 내 테이블 행 내에서 내 텍스트보기에이 클래스를 사용했습니다. –