2010-04-16 8 views
4

Android 용 홈 화면에 배치 할 수있는 아이콘/위젯 (1 셀 x 1 셀)을 만들려고합니다. 위젯은 안드로이드의 다른 표준 바로 가기처럼 보이고 정확하게 작동합니다. 그것은 아이콘을 가지며 레이블 아래에 트랙볼 (강조 표시 가능)으로 선택 가능합니다. 선택/클릭 될 때 강조 표시됩니다.Android 홈 화면 위젯 (아이콘, 라벨 스타일)

홈 화면 위젯을 만들려면 어떻게해야합니까?

코드/xml을 사용하여 직접 위젯을 작성해야합니까, 아니면 위젯이 다른 홈 화면 위젯과 동일한 스타일/테마를 갖도록하는 데 사용할 수있는 표준 XML, 스타일, 테마, 코드가 있습니까? ?

내가 현재

고해상도/레이아웃/widget.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/Widget" 
    android:layout_width="72dip" 
    android:layout_height="72dip" 
    android:orientation="vertical" 
    android:focusable="true" 
    android:gravity="center_horizontal" 
    style="@android:style/Widget" 
    > 

    <ImageView 
     android:id="@+id/WidgetIcon" 
     android:src="@drawable/icon" 
     android:layout_width="fill_parent" 
     android:layout_height="50dip" 
     android:paddingTop="3dip" 
     android:gravity="center" 
     /> 

    <TextView 
     android:id="@+id/WidgetLabel" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:text="@string/app_name" 
     android:textSize="15dip" 
     android:background="@drawable/corners" 
     /> 

</LinearLayout> 

결과 위젯이 어떤 것을 가까이 보이는

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/Corners"> 
    <stroke android:width="4dp" android:color="#CC222222" /> 
    <padding android:left="4dp" android:top="1dp" android:right="4dp" android:bottom="1dp" /> 
    <corners android:radius="4dp" /> 
</shape> 
/드로어 블/사진 corners.xml, 다음

입술을 가지고 있지만 클릭 할 때 강조 표시되지 않고 레이블이 정확한 위치 또는 올바른 스타일로 정확하게 표시되지 않습니다.

올바른 방법이있는 경우 아이디어가 있습니까? 아니면 가까이 갈 때까지 계속 위의 작업을 계속해야합니까?

+0

표준 라벨과 똑같이 보이는 해결책을 찾았습니까? – chrisonline

+0

아래 답변은 정확합니다. 서로 다른 OS가 서로 다른 방식으로 단축키를 표시 할 수 있으므로 위젯을 단축키처럼 보이게 만들 수는 없습니다. 따라서 HTC 전화 용으로 만들면 바로 가기가 MOTOBLUR 전화에 표시되는 방식과 일치하지 않을 수 있습니다.그 말은, 어쨌든 해냈고 HTC처럼 보이게 만들었습니다. – dmulligan

답변

9

"올바른 방법"은 바로 가기를 만들고 앱 위젯으로 모방하려고하지 않는 것입니다.

위젯 바로 가기처럼, 위젯처럼하지 을 보일 것입니다 :이 핵심 안드로이드 팀에서 [안드로이드 개발자] 토론 목록에 (특히 로맹 가이), such as에 의해 반복적으로 지적되고있다. 주된 이유는 입니다. 바로 가기가 어떻게 될지에 대해서는 전혀 보장이 없습니다. . 다른 기기 (특히 MOTOBLUR 또는 HTC 감지와 같은 맞춤 시스템 UI가있는 기기)는 모양이 다를 수 있으며 느낌 일 수 있습니다. 또는 안드로이드의 다음 업데이트에서 단축키가 인 방식을 바꿀 수도 있습니다.

+1

1x1 위젯을 만드는 것만이 '카운터 배지'가있는 응용 프로그램 아이콘을 만드는 유일한 방법입니다. 내 레이아웃에 장치 별 테마를 적용 할 수있는 방법이 있습니까? –

+0

@ Kevin : "declaratively"에 대한 제 정의에 따르면 앱 위젯이나 바로 가기는 선언적으로 선언 할 수 없습니다. – CommonsWare

+0

앱의 경우처럼 위젯의 이름이 홈 화면의 위젯 아래에 표시되도록하려면 어떻게해야합니까? – toobsco42

1

시스템의 모양과 느낌을 일관성있게 유지하려면 시스템 속성 android:attr/selectableItemBackground을 참조하십시오. 당신이 당신의 위젯에서 이미지 뷰 적절한 강조 등으로 "선택"보이게하려는 경우 예를 들어, : 단지 android_sdk_path/platforms/android-x에 많이 있습니다

<ImageView 
    ... 
    android:background="?android:attr/selectableItemBackground" 
    ... 
    /> 

않습니다. 해피 파고!

편집 :이 간단한 특성은 SDK < v11에 저장되어 있지 않음을 나중에 알게되었습니다. 그래서 지금 내가 아는 가장 좋은 방법은 appwidget 템플릿 팩을 다운로드하여 사용하는 것입니다.

관련 문제