Reputation: 31
I have been trying to create an android home screen widget that supports horizontal scrolling.
I put a GridView
inside the LinearLayout
of my widget. My GridView
has some number of columns. I want that at a moment only 5 columns should be visible on the screen and rest should be accessible on scrolling or on click of a button(It should implement a scrolling animation). I used a HorizontalScrollView
and it said "Problem Loading Widget" on my device.
It seems HorizontalScrollView
is not supported in home screen widgets. Is there another way to implement horizontal scrolling of a GridView
in android home screen widgets?
Upvotes: 3
Views: 2247
Reputation: 686
If you want to make simple Gridview layout with 5 columns you can proceed like this:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<GridView
android:id="@+id/gridView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnWidth="90dp"
android:numColumns="5"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center"/>
</RelativeLayout>
Add your activity and adapter code.Else if you want to animate the views you can use android gridlayoutmanager with recycler view in material desgin like this:
public class MainActivity extends ActionBarActivity {
private GridLayoutManager lLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
setTitle(null);
Toolbar topToolBar = (Toolbar)findViewById(R.id.toolbar);
setSupportActionBar(topToolBar);
topToolBar.setLogo(R.drawable.logo);
topToolBar.setLogoDescription(getResources().getString(R.string.logo_desc));
List<ItemObject> rowListItem = getAllItemList();
lLayout = new GridLayoutManager(MainActivity.this, 4);
RecyclerView rView = (RecyclerView)findViewById(R.id.recycler_view);
rView.setHasFixedSize(true);
rView.setLayoutManager(lLayout);
RecyclerViewAdapter rcAdapter = new RecyclerViewAdapter(MainActivity.this, rowListItem);
rView.setAdapter(rcAdapter);
}
private List<ItemObject> getAllItemList(){
List<ItemObject> allItems = new ArrayList<ItemObject>();
allItems.add(new ItemObject("United States", R.drawable.one));
allItems.add(new ItemObject("Canada", R.drawable.two));
allItems.add(new ItemObject("United Kingdom", R.drawable.three));
allItems.add(new ItemObject("Germany", R.drawable.four));
allItems.add(new ItemObject("Sweden", R.drawable.five));
allItems.add(new ItemObject("United Kingdom", R.drawable.six));
allItems.add(new ItemObject("Germany", R.drawable.seven));
allItems.add(new ItemObject("Sweden", R.drawable.eight));
allItems.add(new ItemObject("United States", R.drawable.one));
allItems.add(new ItemObject("Canada", R.drawable.two));
allItems.add(new ItemObject("United Kingdom", R.drawable.three));
allItems.add(new ItemObject("Germany", R.drawable.four));
allItems.add(new ItemObject("Sweden", R.drawable.five));
allItems.add(new ItemObject("United Kingdom", R.drawable.six));
allItems.add(new ItemObject("Germany", R.drawable.seven));
allItems.add(new ItemObject("Sweden", R.drawable.eight));
return allItems;
}
}
Upvotes: 0
Reputation: 366
You can't make app widget scroll horizontally, because this action restricted to switch home screens.
Also you can't use HorizontalScrollView
A RemoteViews object (and, consequently, an App Widget) can support the following layout classes:
FrameLayout
LinearLayout
RelativeLayout
GridLayout
And the following widget classes:
AnalogClock
Button
Chronometer
ImageButton
ImageView
ProgressBar
TextView
ViewFlipper
ListView
GridView
StackView
AdapterViewFlipper
Descendants of these classes are not supported.
Upvotes: 0