2009-12-07 43 views
9

Giả sử tôi có hai bố cục cho một tiện ích: Layout1 và Layout2. Mặc định cho tiện ích là Layout1, nhưng tôi cho phép người dùng chọn bố cục nào họ muốn tiện ích con. Vì vậy, nếu người dùng thay đổi thành Bố cục 2, làm cách nào để thay đổi bố cục theo bố cục sang Bố cục 2?Thay đổi Bố cục Widget Lập trình

Không có phương thức setContentView cho các tiện ích con như dành cho Hoạt động.

Cảm ơn

Trả lời

8

Bạn phải chọn bố cục khi xây dựng từ xa. Trong mã tiện ích con của tôi:

public static RemoteViews buildUpdate(Context context, String action) { 
    RemoteViews updateViews;    
    SharedPreferences prefs = context.getSharedPreferences(PREFS_NAME, 0); 
    String typeface = prefs.getString("typeface", "sans"); 
    int layoutId = R.layout.widget_sans; 
    if ("monospace".equals(typeface)){ 
     layoutId = R.layout.widget_mono; 
    } else if ("serif".equals(typeface)){ 
     layoutId = R.layout.widget_serif; 
    } 
    updateViews = new RemoteViews(context.getPackageName(), 
     layoutId); 
    //actually do things here 
    //then finally, return our remoteView 
    AppWidgetManager.getInstance(context).updateAppWidget(
     new ComponentName(context, FuzzyWidget.class), updateViews); 

} 
+0

như vậy là nó layoutID mà tôi cần? Tôi nhận thấy phương pháp updateAppWidget không sử dụng nó. –

+0

xin lỗi - tôi đã bỏ lỡ một dòng; cố định điều đó. Những gì bạn cần là tạo một RemoteView mới với tên gói và id bố trí để chuyển tới updateAppWidget. –

2

Cảm ơn Yoni.

Chỉ muốn thêm vào mã của bạn. Khi nhận được đối tượng RemoteViews, bạn chỉ định bối cảnh và ID bố cục. Đây là nơi bạn đặt bố cục bạn muốn hiển thị.

Ví dụ ...

RemoteViews views = null; 

if (1 == 1) 
     views = new RemoteViews(m_context.getPackageName(), R.layout.Layout1); 
else 
     views = new RemoteViews(m_context.getPackageName(), R.layout.Layout2); 

AppWidgetManager.getInstance(context).updateAppWidget(
    new ComponentName(context, FuzzyWidget.class), views); 
+2

. xin lỗi, tôi vô tình nuked một vài dòng khi sao chép từ mã của tôi. cố định lên. –

+0

@YoniSamlan tôi thay đổi bố cục thành công nhưng sau khi thay đổi bố cục tiện ích con nhấp chuột không hoạt động ... – Prashant09

+0

@ Prashant09 sử dụng swith trường hợp – Ranjit

Các vấn đề liên quan