I can confirm similar behavior in my maps. If the layer is editable, all visible fields are editable.
The workaround here (warning: it's tedious) is that recently AGOL added the ability to toggle editing per field. So I guess it's more accurate to say, if the layer is editable, all visible fields are editable if their settings allow it.
Item → Data → Fields → Field → Editable
It's a really fantastic addition, and you'd only have to change it once per layer / view, but there's not really another way around it at this point.
To make it less tedious, you could do this via the Python API. If you look at FeatureLayer.manager.properties, you can find the fields section, which looks like this (emphasis added):
"fields": [
{
"name": "OBJECTID",
"type": "esriFieldTypeOID",
"actualType": "int",
"alias": "OBJECTID",
"sqlType": "sqlTypeInteger",
"nullable": false,
"editable": false,
"visible": true,
"domain": null,
"defaultValue": null
},
Using update_definition, you can adjust the editable property that way as well. Depending on how many layers you're trying to update, it might be quicker to do up a python loop.
- Josh Carlson
Kendall County GIS