2015-01-03 1 views
1

작은 위젯을 만들고 있는데 그것에 꽤 좌절감을 느낍니다. 내가 그것을 보았던 것에 따라 나는 단지 색을 설정하고 있었다. 그리고 그것은 ok이었다. 하지만 이제는 시스템 테마 설정과 일치하도록 만들고 싶습니다. 그것이 어떻게 성취 될 수 있는가? 나는 몇 가지 코드를 게시 요청 된대로시스템 테마 색상을 사용하여 위젯 디자인하기

:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent" 
    android:padding="@dimen/widget_margin" 
    android:orientation="vertical" 
    style="@android:style/Theme.Holo.Light"> 
    <!-- pasek górny z przyciskiem dodawania --> 
    <GridLayout 
     android:layout_width="fill_parent" 
     android:layout_height="37dp" 
     android:rowCount="1" 
     android:columnCount="2" 
     android:id="@+id/Header" 
     android:background="@android:color/holo_blue_dark"> 

     <ImageButton 
      android:layout_width="37dp" 
      android:layout_height="37dp" 
      android:id="@+id/AddButton" 
      android:layout_row="0" 
      android:layout_column="1" 
      android:contentDescription="Add" /> 
    </GridLayout> 

    <!-- panel z wiadomościami --> 
    <ListView 
     android:layout_width="fill_parent" 
     android:layout_height="0dp" 
     android:id="@+id/ListView" 
     android:layout_weight="1" 
     style="@android:style/Widget.Holo.ListView" 
     android:background="@android:color/holo_green_light" /> 

    <!-- stopka widgetu --> 
    <GridLayout 
     android:layout_width="fill_parent" 
     android:layout_height="37dp" 
     android:rowCount="1" 
     android:columnCount="2" 
     android:layout_gravity="end" 
     android:id="@+id/Footer" 
     android:background="@android:color/holo_blue_dark"> 

     <TextView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:textAppearance="?android:attr/textAppearanceSmall" 
      android:text="@string/copyright" 
      android:id="@+id/textView" 
      android:layout_column="1" 
      android:layout_row="0" 
      android:textColor="@android:color/white" 
      android:layout_gravity="center_vertical" /> 
    </GridLayout> 
</LinearLayout> 

은 내 위젯이 시간 시스템을 조화하고 싶다. 일부 아이콘, 일부 색상 및 그래픽을 제공하는 테마를 사용할 수 있으므로 다른 위젯과 일치시키기 위해 위젯에서 해당 색상을 사용합니다. 가능한가?

+0

혼란스러운 점을 공유하는 코드를 게시하십시오. 또한 테마 설정을 일치시킴으로써 무엇을 의미합니까? – natario

답변

0
  • 어떤 android:color, android:background 또는이 견해는 테마의 색상을 상속 설정하지 않은 경우.

먼저 만족하는 테마를 상속하고 있는지 확인하십시오. 위젯에 대해

<style name="MyStyle" parent="Theme.Material"> 

</style> 
  • , 자연 색조가 아닌이 찾고 어떤 경우에는, 당신은 styles.xml에서 위에서 언급 한 테마를 사용자 정의 할 수 있습니다. 스타일 버튼, 목록보기 등을 쉽게 찾을 수 있습니다.

    <style name="MyStyle" parent="Theme.Material"> 
    <item name="android:ButtonStyle">@style/MyStyle.Buttons</item> 
    ... 
    </style> 
    
    <style name="MyStyle.Buttons" parent="Widget.Material.Button"> 
    <item name="android:background">@color/my_color</item> 
    ... 
    </style> 
    

    먼저 모든 버튼을 MyStyle.Buttons에서 스타일을해야한다는 말 : 여기

은 버튼에 대한 예입니다. 그런 다음 MyStyle.Buttons을 정의하고 원하는 모든 기능을 추가하십시오. 이렇게하면 모든 버튼은 같은 배경을 가지며 으로 직접 처리해야합니다.

이 주제에 대해 많은 질문이 있습니다.

+0

글쎄, 나는 이것을 단지 과대 평가했다. 그래서 유일한 방법은 안드로이드 테마 중 하나를 확장하고 내부의 모든 색상을 설정하는 것입니다. 그리고 내 스타일로 정의해야 할 색상. 따라서 시스템 위젯과 함께 내 App 위젯을 블렌드 인으로 만드는 유일한 방법은 모든 것을 손으로 만드는 것입니다. 단 하나의 브랜드화 된 ROM에서만 작동합니다. – Eloar

+0

당신이 오해했다고 생각합니다. 제 편집 된 답변을보십시오. 스타일 정의는 위젯을 색칠하는 가장 쉬운 방법이며, styles.xml에서 설정 한 속성은 작성한 모든 위젯에 전파됩니다. 각각의 버튼 하나 하나를 손으로 직접 조작 할 필요는 없습니다. 이것은 ROM과 관련이 없습니다. – natario

+0

나는 이해한다. 당신이 올린 글은 도움이되지만 정확히 내가 원하는 것은 아닙니다. 나는 다른 위젯을 설치 한 것과 비슷한 모양을 보이게하기 위해 배경색이나 다른 색상을 시스템에서 읽는 방법을 찾고있었습니다. 당신은 대답을 읽을 수는 없지만 모든 색상을 배경으로 쉽게 설정하여 전체 응용 프로그램에서 쉽게 사용할 수 있지만 먼저 styles.xml 파일에서 정확한 값으로 설정해야합니다. – Eloar

관련 문제