GridLayout和GridView的区别

GridView是一种适配器布局,它的继承关系是ViewGroup-->AdapterView-->AbsListView-->GridView,他是从一个adapter中取出内容填充到GridView中的每一个子View。

GridLayout是一个布局,它大大简化了对复杂布局的处理,提高了性能。他直接继承自ViewGroup,和LinearLayout这种是类似的。

我感觉GridView和GridLayout就和ListView和LinearLayout的区别类似。


那么什么时候用GridView什么时候用GridLayout呢?
类似九宫格这种可以采用GridView。但是像Android系统自带的计算器的界面就不可能通过GridView实现,因为有些按键不一样大,如果使用GridLayout实现那就很简单了。

另外GridLayout比RelativeLayout更好用,例如:
一个登陆界面举例:登陆界面应该有登陆界面的标题、用户名和密码的label和输入框及确认登陆按钮,如果用相对布局实现肯定是可以实现的,需要相对布局里面控件与控件间的位置关系就复杂繁琐了。Android框架在将你定义的相对布局xml文件渲染给屏幕的时候,需要处理这么复杂的控件间的关系,肯定性能会受一定程度的影响。当然,用相对布局会比用多个线性布局嵌套性能要好一些。
但是,用GridLayout的话,渲染性能会比用相对布局好很多。因为GridLayout中的控件间的位置关系没那么复杂,就是指定将某个控件放到某行某列,占几行或占几列,布局xml写起来也非常简洁。


  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Xamarin.Android 中的网格布局(GridLayout)是一种强大的控件,它允许你在 Android 应用中创建二维网格布局。如果你想要在网格中的单元格被点击时触发事件,你可以使用 `android.widget.GridLayout` 类,并结合 `OnClickListener` 或 `View.OnTouchListener` 来实现。 以下是实现步骤: 1. **添加布局**: 在 XML 文件中,定义一个 GridLayout,设置列数和行数,并为每个单元格添加一个 `ImageView`, `TextView` 或其他视图作为事件源。 ```xml <GridLayout android:id="@+id/gridLayout" android:layout_width="match_parent" android:layout_height="match_parent" android:numColumns="3" android:rowCount="4"> <ImageView android:id="@+id/imageView1" android:src="@drawable/some_image" android:onClick="onCellClicked" /> <!-- Add more views here --> </GridLayout> ``` 2. **绑定事件处理方法**: 在对应的 C# 类中,声明并实现 `OnCellClicked` 方法,该方法会在点击网格中的任何单元格时被调用。 ```csharp public partial class YourActivity : AppCompatActivity { protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); SetContentView(Resource.Layout.activity_your_layout); // Get a reference to the GridLayout in code var gridView = FindViewById<GridLayout>(Resource.Id.gridLayout); // Attach a click listener to the GridLayout gridView.Click += OnGridClick; } private void OnGridClick(object sender, AdapterView.ViewClickEventArgs e) { var view = (View)e.View; // Do something with the clicked view, like get its ID or data if (view is ImageView imageView) { // Handle ImageView click } else if (view is TextView textView) { // Handle TextView click } } } ``` 3. **处理点击事件**: 在 `OnGridClick` 方法中,检查点击的视图类型,然后执行相应的操作。例如,你可以访问 `ImageView` 或 `TextView` 的数据、改变其状态或执行其他业务逻辑。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值