(This was posted in Stack Overflow, with 0 answers so far. Perhaps I have 
more luck here)

In an appwidget I have a somewhat complex layout with nested LinearLayouts 
that serve as vertical columns. I want to add a setting that would allow 
the user to choose a fixed or flexible widht for the columns (now it's 
fixed at 38dip).

In XML terms, users could choose:

<item name="android:layout_width">38dip</item>

or

<item name="android:layout_width">wrap_content</item>

The following code will work if the LinearLayout belonged to an Activity, 
but in an appwidget crashes because of the invalid cast ((Activity) 
context):


private static void customizeWidget(Context context) {
    int identifier;
    int styleWidth = 38;
    int newWidth = ph.autoAdjustableColumns() ? 
ViewGroup.LayoutParams.WRAP_CONTENT : styleWidth; 
    for (int i = 1; i <= 7; i++) {
        identifier = context.getResources().getIdentifier("day" + i + "_ll", 
"id", context.getPackageName());
        LinearLayout llDatesCol = (LinearLayout) ((Activity) 
context).findViewById(identifier);
        ViewGroup.LayoutParams params = llDatesCol.getLayoutParams();
        params.width = newWidth;
        llDatesCol.setLayoutParams(new LinearLayout.LayoutParams(params));
    }
}

AFAIK it crashes because of limitations of the RemoteViews API, there is no 
way to set parameters for layouts when they are accesed via RemoteViews.

I know I could load a different XML layout in each case, but since the 
layouts would differ only in this line, I feel like it's a waste. Any other 
solutions?

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to