The two programs give different information (try
man fdisk and
fdisk will show you the available partitions of the disk (those are the lines that come after the output you have posted) and
df will show the usage of mounted partitions.
If that is the entirety of the
df -h output, it looks like you only have one partition mounted,
/dev/xvda1 which is 7.9G. Based on the output you posted, you probably ran
fdisk -l /dev/xvda1 not
fdisk -l. This should also have returned an error:
Disk /dev/xvda1 doesn't contain a valid partition table
fdisk should be run on disks, not partitions. Try
fdisk -l /dev/xvda (without the partition number) or simply
fdisk -l. That should show you the full partition table of all your disks. One of these partitions will be
xvda1 and will be 7.9G in size. When you run
fdsik on a partition, it reports the size of the entire disk (26.8 GB in your case), not the size of the partition you gave it as input.