Powering the Arduino with a battery and reading the battery voltage
AFAIK, Arduinos are set up to use their operating voltage as the analogRead reference voltage by default.

So, what I think is happening is that you are trying to measure the battery voltage with the battery itself as a reference voltage.

This will, of course, always show "full scale".

You could use a voltage divider to bring the measured battery voltage down to about 1V (max) and use the internal reference of 1.1V for measuring.

Note that the 1.1V internal reference is stable, but not necessarily exactly 1.1V.