Xamarin 如何制作单行水平列表视图/列表?
我想做的是创建一个带有图像和文本的单行Listview/列表,这就是我现在拥有的 我已经将numColumns更改为1,但是如何更改它以使其水平且可滚动?图片应该在上面,文字应该在下面 这是布局图Xamarin 如何制作单行水平列表视图/列表?,xamarin,xamarin.android,Xamarin,Xamarin.android,我想做的是创建一个带有图像和文本的单行Listview/列表,这就是我现在拥有的 我已经将numColumns更改为1,但是如何更改它以使其水平且可滚动?图片应该在上面,文字应该在下面 这是布局图 <?xml version="1.0" encoding="utf-8"?> <GridView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/gridview"
<?xml version="1.0" encoding="utf-8"?>
<GridView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="90dp"
android:numColumns="1"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center"
/>
单个网格项
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:layout_width="match_parent"
android:layout_height="250dp"
android:scaleType="centerCrop"
android:id="@+id/my_image_vieww" />
<TextView
android:textAppearance="?android:attr/textAppearanceLarge"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/my_text_view" />
</LinearLayout>
主要活动
var gridview = FindViewById<GridView> (Resource.Id.gridview);
gridview.Adapter = new ImageAdapter (this);
gridview.ItemClick += delegate (object sender, AdapterView.ItemClickEventArgs args) {
Toast.MakeText (this, args.Position.ToString (), ToastLength.Short).Show ();
};
public class ImageAdapter : BaseAdapter
{
Context context;
public ImageAdapter (Context c)
{
context = c;
}
public override int Count {
get { return thumbIds.Length; }
}
public override Java.Lang.Object GetItem (int position)
{
return null;
}
public override long GetItemId (int position)
{
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public override View GetView (int position, View convertView, ViewGroup parent)
{
ImageView imageView;
View view;
if (convertView == null) { // if it's not recycled, initialize some attributes
view = LayoutInflater.From(parent.Context).Inflate(Resource.Layout.my_grid_row, parent, false);
} else {
view = convertView;
}
var imageView2 = view.FindViewById<ImageView>(Resource.Id.my_image_vieww);
imageView2.SetImageResource (thumbIds[position]);
var textView = view.FindViewById<TextView>(Resource.Id.my_text_view);
textView.Text = "Text to Display";
return view;
}
}
var gridview=findviewbyd(Resource.Id.gridview);
Adapter=新的ImageAdapter(此);
gridview.ItemClick+=委托(对象发送者,AdapterView.ItemClickEventArgs args args){
Toast.MakeText(this,args.Position.ToString(),ToastLength.Short);
};
公共类ImageAdapter:BaseAdapter
{
语境;
公共图像适配器(上下文c)
{
上下文=c;
}
公共覆盖整数计数{
获取{return thumbIds.Length;}
}
public override Java.Lang.Object GetItem(int位置)
{
返回null;
}
公共覆盖长GetItemId(int位置)
{
返回0;
}
//为适配器引用的每个项目创建新的ImageView
公共覆盖视图GetView(int位置、视图转换视图、视图组父视图)
{
图像视图图像视图;
视图;
如果(convertView==null){//如果它没有被回收,初始化一些属性
view=LayoutInflater.From(parent.Context).充气(Resource.Layout.my\u grid\u行,parent,false);
}否则{
视图=转换视图;
}
var imageView2=view.findviewbyd(Resource.Id.my\u image\u vieww);
imageView2.SetImageResource(thumbIds[position]);
var textView=view.findviewbyd(Resource.Id.my\u text\u视图);
textView.Text=“要显示的文本”;
返回视图;
}
}
请不要使用水平列表视图。
有预定义的android控件来实现这一点查看寻呼机
示例代码:
var _viewPager = view.FindViewById<ViewPager>(Resource.Id.viewPager);
var _viewPageIndicatorCircle = view.FindViewById<CirclePageIndicator>(Resource.Id.viewPageIndicator);
_viewPager.Adapter = new TestFragmentAdapter(fm);
_viewPageIndicatorCircle.SetViewPager(_viewPager);
public class TestFragmentAdapter : FragmentPagerAdapter
{
public TestFragmentAdapter(Android.Support.V4.App.FragmentManager fm)
: base(fm)
{
}
public override Android.Support.V4.App.Fragment GetItem(int position)
{
return new TestFragment();
}
public override int Count
{
get
{
return 5;
}
}
}
class TestFragment : Android.Support.V4.App.Fragment
{
public TestFragment()
{
}
public override View OnCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
var view = inflater.Inflate(Resource.Layout.MyViewPager , container, false);
return view;
}
}
var\u viewPager=view.findviewbyd(Resource.Id.viewPager);
var _viewPageIndicator循环=view.FindViewById(Resource.Id.viewPageIndicator);
_viewPager.Adapter=新的TestFragmentAdapter(fm);
_ViewPageIndicator循环设置viewPager(_viewPager);
公共类TestFragmentAdapter:FragmentPagerAdapter
{
公共TestFragmentAdapter(Android.Support.V4.App.FragmentManager fm)
:基本(调频)
{
}
public override Android.Support.V4.App.Fragment GetItem(int位置)
{
返回新的TestFragment();
}
公共覆盖整数计数
{
得到
{
返回5;
}
}
}
类TestFragment:Android.Support.V4.App.Fragment
{
公共测试片段()
{
}
创建视图上的公共覆盖视图(布局、充气机、视图组容器、捆绑包保存状态)
{
var视图=充气机。充气(Resource.Layout.MyViewPager,container,false);
返回视图;
}
}
Viewpager.xml
<android.support.v4.view.ViewPager
android:id="@+id/viewPager"
android:layout_width="fill_parent"
android:layout_height="209.6dp" />
如果您有任何疑问,请随时问我我想您不需要ListView,而需要ViewPager。这是一个很好的例子。@i您好,我如何使用ViewPager实现这样的功能?ViewPager的工作原理类似于旋转木马。它使您能够水平滚动项目。